home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / INTER53C.ZIP / INTERRUP.K < prev    next >
Encoding:
Text File  |  1997-01-12  |  348.1 KB  |  9,494 lines

  1. Interrupt List, part 11 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------N-2FB800-----------------------------
  4. INT 2F - NETWORK - INSTALLATION CHECK
  5.     AX = B800h
  6. Return: AL = status
  7.         00h        not installed
  8.         nonzero installed
  9.           BX = installed component flags (test in this order!)
  10.            bit 6   server
  11.            bit 2   messenger
  12.            bit 7   receiver
  13.            bit 3   redirector
  14.            bit 1   LANPUP (LANtastic 4.0)
  15. Notes:    this function is supported by PC LAN Program, LAN Manager, LANtastic,
  16.       NetWare Lite, SilverNET, 10NET, etc.
  17.     LANtastic and NetWare Lite use only BL for the return value, preserving
  18.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  19.       differentiation between those two groups by setting BH to a nonzero
  20.       value before the call and checking its value on return.
  21. SeeAlso: AX=4E53h,AX=B809h
  22. --------N-2FB800CXF041-----------------------
  23. INT 2F - 10NET - INSTALLATION CHECK
  24.     AX = B800h
  25.     CX = F041h
  26. Return: AL = status
  27.         00h        not installed
  28.         nonzero installed
  29.         BX = installed component flags (test in this order!)
  30.            bit 6   server
  31.            bit 2   messenger
  32.            bit 7   receiver
  33.            bit 3   redirector
  34.            bit 1   LANPUP (LANtastic 4.0)
  35.         CX = 10Net data segment
  36.         CX:DX -> 10Net Configuration Table
  37.               (see #1031 at INT 21/AX=5E01h"10NET")
  38. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  39.       call becomes identical to the standard installation check above
  40. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  41. --------N-2FB803-----------------------------
  42. INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
  43.     AX = B803h
  44. Return: ES:BX -> current event post handler (see AX=B804h)
  45. Note:    this function is supported by PC LAN Program, 10NET v5.0,
  46.       NetSoft DOS-NET v1.20+
  47. SeeAlso: AX=B800h,AX=B804h,AX=B903h
  48. --------N-2FB804-----------------------------
  49. INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
  50.     AX = B804h
  51.     CX = (10NET) 0370h if 10Windows is hooking post handler
  52.     ES:BX -> new event post handler (see #2252)
  53. Notes:    used in conjunction with AX=B803h to hook into the network event post
  54.       routine
  55.     this function is supported by PC LAN Program, 10NET v5.0,
  56.       NetSoft DOS-NET v1.20+
  57.     The specified handler is called on any network event.  Two events are
  58.       defined: message received and critical network error.
  59. SeeAlso: AX=B800h,AX=B803h,AX=B904h
  60.  
  61. (Table 2252)
  62. Values network post routine is called with:
  63.     AX = 0000h single block message
  64.         DS:SI -> ASCIZ originator name
  65.         DS:DI -> ASCIZ destination name
  66.         ES:BX -> text header (see #2253)
  67.     AX = 0001h start multiple message block
  68.         CX = block group ID
  69.         DS:SI -> ASCIZ originator name
  70.         DS:DI -> ASCIZ destination name
  71.     AX = 0002h multiple block text
  72.         CX = block group ID
  73.         ES:BX -> text header (see #2253)
  74.     AX = 0003h end multiple block message
  75.         CX = block group ID
  76.     AX = 0004h message aborted due to error
  77.         CX = block group ID
  78.     AX = 0101h server received badly formatted network request
  79.         Return: AX = FFFFh (PC LAN will process error)
  80.     AX = 0102h unexpected network error
  81.         ES:BX -> NCB (see #2500 at INT 5C"NetBIOS")
  82.     AX = 0103h server received INT 24 error
  83.         other registers as for INT 24, except AH is in BH
  84.         Return: as below, but only 0000h and FFFFh allowed
  85. Return: AX = response code
  86.         0000h user post routine processed message
  87.         0001h PC LAN will process message, but message window not displayed
  88.         FFFFh PC LAN will process message
  89.  
  90. Format of text header:
  91. Offset    Size    Description    (Table 2253)
  92.  00h    WORD    length of text (maximum 512 bytes)
  93.  02h  N BYTEs    text of message
  94. Note:    all CRLF sequences in message text are replaced by 14h; all other
  95.       values below 20h (space) are reserved
  96. --------N-2FB807-----------------------------
  97. INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
  98.     AX = B807h
  99. Return: CH = NetBIOS name number of the machine name
  100. SeeAlso: INT 21/AX=5E00h
  101. --------N-2FB808-----------------------------
  102. INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
  103.     AX = B808h
  104.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  105. Notes:    this call replaces the address to which the network software chains on
  106.       an INT 09 without preserving the original value.  This allows a prior
  107.       handler to unlink, but does not allow a new handler to be added
  108.       such that the network gets the INT 09 first unless the new handler
  109.       completely takes over INT 09 and never chains.
  110.     this function is called by the DOS 3.2 KEYBxx.COM
  111. SeeAlso: AX=B908h
  112. --------N-2FB809-----------------------------
  113. INT 2F - NETWORK - LANtastic, NetWare Lite - GET VERSION
  114.     AX = B809h
  115. Return: AH = major version
  116.     AL = minor version (decimal)
  117. Notes:    this function is supported in this form by LANtastic, NetWare Lite,
  118.       SilverNET, ...
  119.     NetWare Lite returns its own version number rather than a PC LAN
  120.       compatibility version
  121. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
  122. --------N-2FB809-----------------------------
  123. INT 2F - NETWORK - PC LAN Program - GET VERSION
  124.     AX = B809h
  125. Return: AH = minor version (decimal)
  126.     AL = major version
  127. Notes:    this function is supported in this form by PC LAN Program, LAN Manager,
  128.       the DOS LAN Requester, and 10NET v5.0
  129.     10NET returns version 1.10 (AX=0A01h) for compatibility
  130. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  131. --------N-2FB80A-----------------------------
  132. INT 2F u - PC Network 1.00 - ???
  133.     AX = B80Ah
  134.     ???
  135. Return: ???
  136. Program: PC Network is an early networking package which was renamed the
  137.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  138. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  139. --------N-2FB80F-----------------------------
  140. INT 2F - DOS LAN Requester - GET START PARAMETERS
  141.     AX = B80Fh
  142.     CX = size of return data buffer
  143.     ES:DI -> return data buffer (see #2254)
  144. Return: AX = status
  145.          00h     network started
  146.          nonzero network not started
  147.     CX = number of bytes returned in buffer
  148.     ES:DI buffer filled
  149. SeeAlso: AX=B809h"PC LAN Program"
  150.  
  151. Format of DOS LAN Requester return data buffer:
  152. Offset    Size    Description    (Table 2254)
  153.  00h    BYTE    major version
  154.  01h    BYTE    minor version
  155.  02h    WORD    configuration flags given when network was started (see #2255)
  156.  04h 15 BYTEs    NET START machine name (space padded)
  157.  13h    BYTE    00h
  158.  14h 9    BYTEs    NET START domain name (NULL padded)
  159.  1Dh    BYTE    00h
  160.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  161.  3Eh    WORD    /SRV value
  162.  40h    WORD    /ASG value
  163.  42h    WORD    /NBC value
  164.  44h    WORD    /NBS value
  165.  46h    WORD    /BBC value
  166.  48h    WORD    /BBS value
  167.  4Ah    WORD    /PBC value
  168.  4Ch    WORD    /PBS value
  169.  4Eh    WORD    /PFS value
  170.  50h    WORD    /PFT value
  171.  52h    WORD    /PWT value
  172.  54h    WORD    /KUC value
  173.  56h    WORD    /KST value
  174.  58h    WORD    /NVS value
  175.  5Ah    WORD    /NMS value
  176.  5Ch    WORD    /NDB value
  177.  5Eh    WORD    /MBI value
  178.  60h    BYTE    NetBIOS name number for machine name
  179.  61h    BYTE    NetBIOS name number for domain name
  180.  62h    WORD    NetBIOS sessions required for configuration
  181.  64h    WORD    NetBIOS commands required for configuration
  182.  66h    WORD    NetBIOS names required for configuration
  183.  68h 128 BYTEs    NET START path (LANROOT)
  184.  E8h    BYTE    00h
  185.  
  186. Bitfields for configuration flags:
  187. Bit(s)    Description    (Table 2255)
  188.  0    /NVS nonzero
  189.  1    /NMS nonzero
  190.  2    /API
  191.  3    /HIM
  192.  4    /LIM
  193.  5    /ENC
  194.  6    /POP
  195.  7    /EMS
  196.  8    /RPL
  197.  9-12    reserved
  198.  13    RDR started
  199.  14    RCV started
  200.  15    User is currently logged on
  201. --------N-2FB900-----------------------------
  202. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  203.     AX = B900h
  204. Return: AL = state
  205.         00h if not installed
  206.         FFh if installed
  207. --------N-2FB901-----------------------------
  208. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  209.     AX = B901h
  210. Return: AL = ???
  211.     ES:BX -> RECEIVER.COM INT 2F handler
  212. Desc:    allows more efficient execution by letting the caller bypass any other
  213.       INT 2F handlers which have been added since RECEIVER.COM was
  214.       installed
  215. --------N-2FB903-----------------------------
  216. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  217.     AX = B903h
  218. Return: ES:BX -> POST handler
  219. SeeAlso: AX=B803h,AX=B904h
  220. --------N-2FB904-----------------------------
  221. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  222.     AX = B904h
  223.     ES:BX -> new POST handler
  224. SeeAlso: AX=B804h,AX=B903h
  225. --------N-2FB905-----------------------------
  226. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  227.     AX = B905h
  228.     DS:BX -> 128-byte buffer for filename 1
  229.     DS:DX -> 128-byte buffer for filename 2
  230. Return: buffers filled from RECEIVER.COM internal buffers
  231. Note:    use of filenames is unknown, but one appears to be for storing messages
  232. SeeAlso: AX=B906h
  233. --------N-2FB906-----------------------------
  234. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  235.     AX = B906h
  236.     DS:BX -> 128-byte buffer for filename 1
  237.     DS:DX -> 128-byte buffer for filename 2
  238. Return: RECEIVER.COM internal buffers filled from user buffers
  239. Note:    use of filenames is unknown, but one appears to be for storing messages
  240. SeeAlso: AX=B905h
  241. --------N-2FB908-----------------------------
  242. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  243.     AX = B908h
  244.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  245. Note:    this call replaces the address to which RECEIVER.COM chains on an
  246.       INT 09 without preserving the original value.     This allows a prior
  247.       handler to unlink, but does not allow a new handler to be added
  248.       such that RECEIVER gets the INT 09 first.
  249. SeeAlso: AX=B808h
  250. --------V-2FBC00-----------------------------
  251. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  252.     AX = BC00h
  253. Return: AL = state
  254.         00h not installed, OK to install
  255.         01h not installed, not OK to install
  256.         FFh installed
  257.         BX = 5456h ("TV")
  258. Range:    AH=80h to AH=FFh, selected by commandline switch
  259. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  260. --------s-2FBC00BX3F3F-----------------------
  261. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  262.     AX = BC00h
  263.     BX = 3F3Fh ('??')
  264.     CX = 0000h
  265.     DX = 0000h
  266. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  267. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  268.       of sound boards; its primary programmer was Bryan Crane
  269. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  270. --------s-2FBC01-----------------------------
  271. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  272.     AX = BC01h
  273.     BX = magic value 6D20h ('m ')
  274.     CX = magic value 2076h (' v')
  275.     DX = magic value 2020h ('  ')
  276. Return: BX = ASCII major version (leading zeros significant)
  277.     CX = ASCII minor version (leading zeros significant)
  278. SeeAlso: AX=BC00h/BX=3F3Fh
  279. --------s-2FBC02-----------------------------
  280. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  281.     AX = BC02h
  282. Return: BX:DX -> state table
  283. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  284. --------s-2FBC03-----------------------------
  285. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  286.     AX = BC03h
  287. Return: BX:DX -> function table
  288. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  289. --------s-2FBC04-----------------------------
  290. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  291.     AX = BC04h
  292. Return: AX = 4D56h ('MV')
  293.     BL = DMA channel
  294.     CL = IRQ number
  295. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  296. --------V-2FBC06-----------------------------
  297. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  298.     AX = BC06h
  299. Return: BX = 5456h ("TV")
  300.     CH = major version
  301.     CL = minor version
  302.     DL = revision
  303. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  304. --------s-2FBC06-----------------------------
  305. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  306.     AX = BC06h
  307. Return: AX = 4D56h ('MV')
  308.     DX:BX -> status string (first byte 0Ch if no status message to display)
  309. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  310. --------s-2FBC0B-----------------------------
  311. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  312.     AX = BC0Bh
  313. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  314. SeeAlso: AX=BC00h/BX=3F3Fh
  315. --------U-2FBE00-----------------------------
  316. INT 2F - REDVIEW - INSTALLATION CHECK
  317.     AX = BE00h
  318. Return: AL = FFh if installed
  319. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  320.       copies data sent to standard output to standard error when the
  321.       former has been redirected to a file, thus allowing the data to
  322.       be seen on the screen at the same time it is captured in a file
  323. --------N-2FBF00-----------------------------
  324. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  325.     AX = BF00h
  326. Return: AL = FFh if installed
  327. Note:    this function is also supported by NetSoft's DOS-NET v1.20+; however,
  328.       none of the remaining BFxxh calls are supported
  329. SeeAlso: AX=BF01h,AX=BF80h,INT 2A/AX=4147h
  330. --------N-2FBF01-----------------------------
  331. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  332.     AX = BF01h
  333.     ???
  334. Return: ???
  335. SeeAlso: AX=BF00h
  336. --------N-2FBF80-----------------------------
  337. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  338.     AX = BF80h
  339.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  340. Return: AL = FFh if installed
  341.         ES:DI -> internal workspace
  342. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  343. SeeAlso: AX=BF00h
  344. --------F-2FC0-------------------------------
  345. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  346.     AH = C0h
  347.     AL = function code (01h to 15h)
  348. Return: ???
  349. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  350. --------N-2FC000-----------------------------
  351. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  352.     AX = C000h
  353. Return: AL = FFh if installed
  354.         DX:BX -> FAR entry point (see #2256,#2257,#2258)
  355.         ES:SI -> signature string "LINKSUP$"
  356. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  357. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  358.       its search for a previous installation
  359. SeeAlso: AX=5100h,AX=C000h"NESL"
  360.  
  361. (Table 2256)
  362. Call LSL function "Request MLID Registration" with:
  363.     BX = 0001h
  364.     ES:SI -> registration??? record (see #2260)
  365.     DS:DI -> buffer for LSL information block (see #2261)
  366. Return: AX = completion code (0000h,8001h) (see #2259)
  367.     DS:DI buffer filled if successful
  368.     BX,CX corrupted
  369. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  370.  
  371. (Table 2257)
  372. Call LSL function "get support entry points" with:
  373.     BX = 0002h
  374.     ES:SI -> buffer for entry point record (see #2262)
  375. Return: ES:SI buffer filled
  376.  
  377. (Table 2258)
  378. Call LSL function "Request MLID API entry point" with:
  379.     BX = 0003h
  380. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  381.         (call with BX=function 00h-10h, not range-checked)
  382. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  383.  
  384. (Table 2259)
  385. Values for LSL completion code:
  386.  0000h    successful
  387.  8001h    out of resources
  388.  8002h    bad parameter
  389.  8003h    no more items
  390.  8004h    item not present
  391.  8005h    failed
  392.  8006h    receive overflow
  393.  8007h    canceled
  394.  8008h    bad command
  395.  8009h    duplicate entry
  396.  800Ah    no such handler
  397.  800Bh    no such driver
  398.  
  399. Format of LSL registration record:
  400. Offset    Size    Description    (Table 2260)
  401.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  402.           returning AX = completion code)
  403.  04h    DWORD    -> ???
  404.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  405.  
  406. Format of LSL information block:
  407. Offset    Size    Description    (Table 2261)
  408.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  409.  04h    WORD    ???
  410.  06h    WORD    ???
  411. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  412.       will crash if the above entry point is called with BX=0012h
  413.  
  414. Format of entry point record:
  415. Offset    Size    Description    (Table 2262)
  416.  00h    DWORD    pointer to protocol support entry point in LSL (see #2263)
  417.  04h    DWORD    pointer to general support entry point in LSL (see #2264)
  418.  
  419. (Table 2263)
  420. Call protocol support entry point with:
  421.     BX = function number
  422.         0000h ???
  423.         0001h ???
  424.         0002h ???
  425.         0003h "ScheduleAESEvent"
  426.         ES:SI -> AES ECB to be scheduled (see #2267)
  427.         Return: ES,SI preserved
  428.         0004h "CancelAESEvent"
  429.         ES:SI -> ECB to be cancelled (see #2267)
  430.         Return: ES,SI preserved
  431.         0005h "GetIntervalMarker"
  432.         Return: DX:AX = current interval marker in milliseconds
  433.             all other registers preserved
  434.         0006h "RegisterStack"
  435.         AX = logical board number
  436.         ES:SI -> bound stack info structure (see #2277)
  437.         Return: BX = assigned Stack ID if AX=0000h
  438.         0007h "DeRegisterStack"
  439.         AX = protocol stack's assigned Stack ID
  440.         0008h "RegisterDefaultStack"
  441.         AX = logical board number
  442.         ES:SI -> stack info structure (see #2278)
  443.         0009h "DeRegisterDefaultStack"
  444.         AX = logical board number
  445.         000Ah "RegisterPrescanStack"
  446.         AX = logical board number
  447.         ES:SI -> stack info structure (see #2278)
  448.         000Bh "DeRegisterPrescanStack"
  449.         AX = logical board number
  450.         000Ch "SendPacket"
  451.         ES:SI -> send ECB
  452.         Return: interrupts disabled
  453.         000Dh ???
  454.         000Eh ???
  455.         000Fh ???
  456.         0010h "GetStackIDFromName"
  457.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  458.         Return: BX = Stack ID if AX=0000h
  459.         0011h "GetPIDFromStackIDBoard"
  460.         AX = Stack ID for protocol
  461.         CX = logical board number
  462.         ES:SI -> 6-byte buffer for protocol ID
  463.         0012h "GetMLIDControlEntry"
  464.         AX = logical board number
  465.         Return: ES:SI -> MLID control handler (see #2265) if AX=0000h
  466.         0013h "GetProtocolControlEntry"
  467.         AX = Stack ID or
  468.             FFFEh Prescan stack
  469.                 CX = logical board number
  470.             FFFFh default protocol
  471.                 CX = logical board number
  472.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  473.                   (see #2266)
  474.         0014h "GetLSLStatistics"
  475.         Return: AX = 0000h (successful)
  476.             ZF set
  477.             ES:SI -> LSL statistics table (see #2269)
  478.         0015h "BindStack"
  479.         AX = protocol stack's assigned Stack ID
  480.         CX = logical board number
  481.         0016h "UnbindStack"
  482.         AX = protocol stack's assigned Stack ID
  483.         CX = logical board number
  484.         0017h "AddProtocolID"
  485.         AX = frame type ID code
  486.         ES:SI -> 6-byte protocol ID
  487.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  488.         0018h "RelinquishControl"
  489.         Return: after LSL performs any necessary background processing
  490.         0019h "GetLSLConfiguration"
  491.         Return: AX = 0000h (successful)
  492.             ZF set
  493.             ES:SI -> LSL configuration table (see #2268)
  494.         001Ah "GetTickMarker"
  495.         Return: AX = number of 55ms ticks since LSL loaded
  496.             BX destroyed
  497. Return: AX = completion code (see #2259)
  498.     ZF set if successful
  499.     SS:SP, DS, BP preserved; most other registers may be destroyed
  500.  
  501. (Table 2264)
  502. Call general support entry point with:
  503.     BX = function number
  504.         0000h "Allocate Memory" (obsolete)
  505.          always returns AX=8008h (BAD_COMMAND)
  506.         0001h "Free Memory" (obsolete)
  507.          always returns AX=8008h (BAD_COMMAND)
  508.         0002h "Realloc Memory" (obsolete)
  509.          always returns AX=8008h (BAD_COMMAND)
  510.         0003h "Memory Statistics" (obsolete)
  511.          always returns AX=8008h (BAD_COMMAND)
  512.         0004h "Add Memory To Pool" (obsolete)
  513.          always returns AX=8008h (BAD_COMMAND)
  514.         0005h "AddGeneralService"
  515.         ES:SI -> General Service Control Block (see #2279)
  516.         0006h "RemoveGeneralService"
  517.         ES:SI -> General Service Control Block (see #2279)
  518.         0007h "GetNETcfgPath"
  519.         Return: AX = 0000h (successful)
  520.             DS:DX -> ASCIZ pathname for NET.CFG
  521.         0008h U ???     (in LSL 1.10)
  522.         Return: AX = 0000h
  523.             ES:SI -> ??? (a 22-byte data area)
  524.         000Ah "GetCriticalSectionStatus"
  525.         Return: BX = total outstanding calls to "StartCriticalSection"
  526.         000Bh "ServiceEvents"
  527.         interrupts disabled
  528.         Return: interrupts disabled
  529.         0010h "GetStackECB"
  530.         DS:DI -> Lookahead structure (see #2280)
  531.         interrupts disabled
  532.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  533.             interrupts disabled
  534.         8000h-FFFFh reserved for user general service providers
  535. Return: AX = completion code (see #2259)
  536.     ZF set if successful
  537.     SS:SP, DS, BP preserved
  538.  
  539. (Table 2265)
  540. Call MLID control handler with:
  541.     AX = logical board number
  542.     BX = function number
  543.         0000h "GetMLIDConfiguration"
  544.         Return: ES:SI -> MLID's configuration table if successful
  545.                   (see #2272 for format)
  546.         0001h "GetMLIDStatistics"
  547.         Return: ES:SI -> MLID's statistics table if successful
  548.                   (see #2272 for format)
  549.         0002h "AddMulticastAddress"
  550.         ES:SI -> 6-byte multicast address to add
  551.         0003h "DeleteMulticastAddress"
  552.         ES:SI -> 6-byte multicast address to delete
  553.         0005h "MLIDShutdown"
  554.         CX = type
  555.             0000h permanent (also deregisters from LSL)
  556.             other temporary (shutdown hardware only)
  557.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  558.         0007h "Create Connection" (obsolete?)
  559.         ???
  560.         0008h "Delete Connection" (obsolete?)
  561.         ???
  562.         0009h "SetLookAheadSize"
  563.         CX = requested lookahead size (00h-80h)
  564.         000Ah "PromiscuousChange"
  565.         CX = what to receive promiscuously
  566.             bit 0: MAC frames
  567.             bit 1: non-MAC frames
  568.         000Bh "RegisterReceiveMonitor"
  569.         CX = subfunction
  570.             0000h disable receive monitoring
  571.             else  enable receive monitoring
  572.         ES:SI -> monitor receive routine
  573.         ES:DI -> monitor transmit routine
  574.         000Ch "Driver Poll" (obsolete?)
  575.         ???
  576. Return: AX = completion code (see #2259)
  577.     ZF set if successful
  578. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  579.       mode flags field of the MLID's configuration table
  580.  
  581. (Table 2266)
  582. Call protocol stack control entry point with:
  583.     BX = function number
  584.         0000h "GetProtocolStackConfiguration"
  585.         Return: ES:SI -> protocol stack's configuration table
  586.                    (see #2271)
  587.         0001h "GetProtocolStackStatistics"
  588.         Return: ES:SI -> protocol stack's statistics table (see #2270)
  589.         0002h "BindToMLID"
  590.         CX = board number to bind to
  591.         ES:SI -> implementation-dependant parameter string
  592.         0003h "UnBindFromMLID"
  593.         CX = board number from which protocol should unbind
  594.         ES:SI -> optional implementation-dependant parameter string
  595.         0004h "MLIDDeRegistered"
  596.         CX = board number that has de-registered from LSL
  597. Return: AX = status
  598.         0000h successful
  599.         else implementation-dependant error codes
  600.     ZF set if successful
  601.     SS:SP, DS, BP preserved
  602.  
  603. Format of AES ECB:
  604. Offset    Size    Description    (Table 2267)
  605.  00h    DWORD    "AESLink" pointer used by LSL for list management
  606.  04h    DWORD    number of milliseconds to wait
  607.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  608.  0Ch    DWORD    -> function to be invoked when time expires
  609.         ES:SI will point to this structure on entry,
  610.         DS, BP, and SS:SP must be preserved.
  611. SeeAlso: #2281
  612.  
  613. Format of LSL Configuration Table:
  614. Offset    Size    Description    (Table 2268)
  615.  00h    BYTE    major version of configuration table
  616.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  617.  02h  8 BYTEs    reserved
  618.  0Ah    BYTE    LSL major version (decimal)
  619.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  620. ---LSL 1.0x ---
  621.  0Ch 14 BYTEs    reserved
  622. ---LSL 1.10+ ---
  623.  0Ch    WORD    maximum number of boards which LSL can handle
  624.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  625.  10h 12 BYTEs    reserved
  626.  
  627. Format of LSL Statistics Table:
  628. Offset    Size    Description    (Table 2269)
  629.  00h    BYTE    major version of statistics table format
  630.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  631.  02h    WORD    "GenericCounters" number of counters in static portion of
  632.           table
  633.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  634.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  635.           is the next field, etc.
  636.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  637.  0Ch    DWORD    reserved
  638.  10h    DWORD    reserved
  639.  14h    DWORD    "AESEventsCount" number of completed AES events
  640.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  641.           sections inside the MLIDs
  642.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  643.  20h    DWORD    reserved
  644.  24h    DWORD    reserved
  645.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  646.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  647.           protocol stack
  648.  30h    WORD    "NumberCustom" number of custom variables that follow
  649.  32h  N DWORDs    custom counters
  650.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  651.     var    length-prepended and NULL terminated string for Counter 0
  652.     ...
  653.     var    length-prepended and NULL terminated string for Counter N-1
  654. SeeAlso: #2270,#2276
  655.  
  656. Format of Protocol Stack Statistics Table:
  657. Offset    Size    Description    (Table 2270)
  658.  00h    BYTE    statistics table major version
  659.  01h    BYTE    statistics table minor version (decimal, 0-99)
  660.  02h    WORD    number of generic counters following
  661.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  662.  08h    DWORD    TotalTxPackets
  663.  0Ch    DWORD    TotalRxPackets
  664.  10h    DWORD    IgnoredRxPackets
  665.  14h    WORD    number of custom counters
  666.  16h  N DWORDs    custom counters
  667.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  668.     var    length-prepended and NULL terminated string for Counter 0
  669.     ...
  670.     var    length-prepended and NULL terminated string for Counter N-1
  671. SeeAlso: #2269,#2276
  672.  
  673. Format of Protocol Stack Configuration Table:
  674. Offset    Size    Description    (Table 2271)
  675.  00h    BYTE    configuration table major version
  676.  01h    BYTE    configuration table minor version (decimal, 0-99)
  677.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  678.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  679.  0Ah    BYTE    protocol stack major version
  680.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  681.  0Ch 16 BYTEs    reserved for future use
  682.  
  683. Format of MLID Configuration Table:
  684. Offset    Size    Description    (Table 2272)
  685.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  686.  1Ah    BYTE    configuration table major version
  687.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  688.  1Ch  6 BYTEs    node address
  689.  22h    WORD    MLID mode flags (see #2273)
  690.  24h    WORD    board number
  691.  26h    WORD    board instance (if more than one of same board installed)
  692.  28h    WORD    maximum packet size
  693.  2Ah    WORD    BestDataSize
  694.  2Ch    WORD    WorstDataSize
  695.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  696.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  697.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  698.  3Ah    WORD    reserved (0000h)
  699.  3Ch    WORD    frame type ID
  700.  3Eh    WORD    TransportTime (milliseconds)
  701.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  702.  44h    WORD    lookahead size
  703.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  704.  48h    WORD    QueueDepth
  705.  4Ah  6 BYTEs    reserved (0)
  706.  50h    BYTE    driver major version
  707.  51h    BYTE    driver minor version (decimal, 0-99)
  708.  52h    WORD    bus/multicast flags (see #2274)
  709.  54h    WORD    send retries
  710.  56h    DWORD    ConfigTableLink
  711.  5Ah    WORD    MLID sharing flags (see #2275)
  712.  5Ch    WORD    slot number
  713.  5Eh    WORD    I/O address 1
  714.  60h    WORD    I/O range 1
  715.  62h    WORD    I/O address 2
  716.  64h    WORD    I/O range 2
  717.  66h    DWORD    memory address 1
  718.  6Ah    WORD    memory size 1
  719.  6Ch    DWORD    memory address 2
  720.  70h    WORD    memory size 2
  721.  72h    BYTE    interrupt line 1
  722.  73h    BYTE    interrupt line 2
  723.  74h    BYTE    DMA line 1
  724.  75h    BYTE    DMA line 2
  725.  
  726. Bitfields for MLID mode flags:
  727. Bit(s)    Description    (Table 2273)
  728.  15    MLID supports Octet Reversal
  729.  14    node address is non-canonical
  730.  13    promiscuous mode is supported
  731.  12-8    reserved
  732.  7    LDataSize field in LookAhead structure supported
  733.  6    raw send supported
  734.  5    MLID needs to be polled by LSL
  735.  4    reserved (0)
  736.  3    multicasting is supported
  737.  2    not currently used by DOS ODI, set to 0.
  738.  1    network card uses DMA.
  739.  0    RealDriverBit, always set to 1.
  740.  
  741. Bitfields for bus/multicast flags:
  742. Bit(s)    Description    (Table 2274)
  743.  10-9    specialized multicast support
  744.     00 = Group addressing is default for medium
  745.     01 = Invalid
  746.     10 = Filter group address in MLID.
  747.     11 = Adapter filters group address.
  748.  2    supports Micro Channel cards
  749.  1    supports ISA cards
  750.  0    supports EISA cards
  751.  
  752. Bitfields for MLID sharing flags:
  753. Bit(s)    Description    (Table 2275)
  754.  8    NIC can share DMA2
  755.  7    NIC can share DMA1
  756.  6    NIC can share IRQ2
  757.  5    NIC can share IRQ1
  758.  4    NIC can share Memory2
  759.  3    NIC can share Memory1
  760.  2    NIC can share IO2
  761.  1    NIC can share IO1
  762.  0    MLID is currently shut down
  763.  
  764. Format of MLID Statistics Table:
  765. Offset    Size    Description    (Table 2276)
  766.  00h    BYTE    driver statistics table major version
  767.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  768.  02h    WORD    number of generic counters (typically 13)
  769.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  770.  08h    DWORD    TotalTxCount
  771.  0Ch    DWORD    TotalRxCount
  772.  10h    DWORD    NoECBAvailableCount
  773.  14h    DWORD    TxTooBigCount
  774.  18h    DWORD    TxTooSmallCount
  775.  1Ch    DWORD    RxOverflowCount
  776.  20h    DWORD    RxTooBigCount
  777.  24h    DWORD    RxTooSmallCount
  778.  28h    DWORD    TxMiscCount
  779.  2Ch    DWORD    RxMiscCount
  780.  30h    DWORD    TxRetryCount
  781.  34h    DWORD    RxChecksumErrorCount
  782.  38h    DWORD    RxMismatchCount
  783.  3Ch    WORD    number of custom counters
  784.  3Eh  N DWORDs    custom counters
  785.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  786.     var    length-prepended and NULL terminated string for Counter 0
  787.     ...
  788.     var    length-prepended and NULL terminated string for Counter N-1
  789. SeeAlso: #2269,#2270
  790.  
  791. Format of bound stack info structure:
  792. Offset    Size    Description    (Table 2277)
  793.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  794.  04h    DWORD    -> receive handler
  795.  08h    DWORD    -> control handler
  796.  
  797. Format of stack info structure:
  798. Offset    Size    Description    (Table 2278)
  799.  00h    DWORD    -> receive handler
  800.  04h    DWORD    -> control handler
  801.  
  802. Format of General Service Control Block:
  803. Offset    Size    Description    (Table 2279)
  804.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  805.  04h    DWORD    -> entry point for general service handler
  806.  08h    WORD    command code for this general service (8000h-FFFFh)
  807. Note:    the control block must not be altered or deallocated until the general
  808.       service is removed
  809.  
  810. Format of Lookahead structure:
  811. Offset    Size    Description    (Table 2280)
  812.  00h    DWORD    -> Media header
  813.  04h    DWORD    -> lookahead buffer
  814.  08h    WORD    length of lookahead buffer
  815.  0Ah  6 BYTEs    protocol ID
  816.  10h    WORD    logical board number
  817.  12h    WORD    lookahead size
  818.  
  819. Format of ODI ECB:
  820. Offset    Size    Description    (Table 2281)
  821.  00h    DWORD    link to next ECB
  822.  04h    DWORD    link to previous ECB
  823.  08h    WORD    general status
  824.         0000h received successfully
  825.         8006h packet overflow
  826.         8007h reception aborted (data not valid)
  827.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #2282)
  828.  0Eh    WORD    protocol stack identifier
  829.  10h  6 BYTEs    protocol ID (sending only)
  830.  16h    WORD    MLID board number (sending only)
  831.  18h  6 BYTEs    MAC destination address
  832.  1Eh  4 BYTEs    driver workspace
  833.  22h  8 BYTEs    protocol workspace
  834.  2Ah    WORD    total length of sent buffer
  835.  2Ch    WORD    fragment count
  836.  2Eh  2 WORDs    segment,offset of first fragment buffer
  837.  32h    WORD    length of first fragment buffer
  838.     ...
  839. SeeAlso: #2267
  840.  
  841. (Table 2282)
  842. Values event service routine is called with:
  843.     ES:SI -> associated ODI ECB (see #2281)
  844.     interrupts disabled
  845. Return: DS,BP,SS,SP preserved
  846.     interrupt disabled
  847. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  848.     it is safe to send a packet and wait for completion if enough stack
  849.       space is available
  850. --------N-2FC000-----------------------------
  851. INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
  852.     AX = C000h
  853. Return: AL = FFh if installed
  854.         DX:BX -> FAR entry point (see #2283,#2284,#2285,#2286,#2287,#2288)
  855.         ES:SI -> signature string "NESL_EVENTS"
  856. Program: NESL is a generic interface for event handling in ODI drivers and
  857.       other NetWare-oriented modules.  Primarily intended to support
  858.       power management and "hot swapping" of PCMCIA cards, but it is not
  859.       limited to this.
  860. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  861. SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
  862.  
  863. (Table 2283)
  864. Call NESL function GetNESLConfigPointer with:
  865.     BX = 0000h
  866. Return: AX = completion code (0000h,8008h) (see #2289)
  867.     ES:SI -> NESL configuration table if successful (see #2290)
  868.     BP,DS,STACK preserved
  869. Desc:    Obtain a pointer to the NESL Configuration Table
  870. SeeAlso: #2284,#2287
  871.  
  872. (Table 2284)
  873. Call NESL function RegisterEventProducer with:
  874.     BX = 0001h
  875.     ES:SI -> Producer Event Control Block (PECB) (see #2291)
  876. Return: AX = completion code (0000h, 8005h, 8008h) (see #2289)
  877.     ES:SI -> still points to PECB
  878.     BP,DS,STACK preserved
  879. Desc:    Allows a module to register as a producer of a given event class
  880. Note:    PECB_ClassName and PECB_Flags must be filled in on entry
  881. SeeAlso: #2149,#2285,#2286,#2287
  882.  
  883. (Table 2285)
  884. Call NESL function DeRegisterEventProducer with:
  885.     BX = 0002h
  886.     ES:SI -> PECB previously passed to RegisterEventProducer (see #2291)
  887. Return: AX = completion code (0000h, 8002h, 8008h) (see #2289)
  888.     ES:SI -> still points to PECB
  889.     BP,DS,STACK preserved
  890. Desc:    Allows a module to de-register as a producer of a given event class
  891. SeeAlso: #2284,#2288
  892.  
  893. (Table 2286)
  894. Call NESL function EventNotification with:
  895.     BX = 0003h
  896.     ES:SI -> PECB previously registered (see #2291)
  897. Return: AX = completion code (0h, 8005h, 8008h) (see #2289)
  898.     ES:SI -> still points to PECB
  899.     BP,DS,STACK preserved
  900. Desc:    Allows a module to signal that an event has just occurred in a given
  901.       event class.
  902. Notes:    Once called, NESL will generate corresponding callouts for this
  903.       event, as described in Table #2293.
  904.     on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
  905.       (see #2294) filled in to match the desired event
  906. SeeAlso: #2284
  907.  
  908. (Table 2287)
  909. Call NESL function RegisterEventConsumer with:
  910.     BX = 0004h
  911.     ES:SI -> Consumer Event Control Block (CECB) (see #2292)
  912. Return: AX = completion code (0h, 8005h, 8008h) (see #2289)
  913.     ES:SI -> still points to CECB
  914.     BP,DS,STACK preserved
  915. Desc:    Allows a module to register as a consumer of a given event class
  916. Note:    on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
  917.       filled in.
  918. SeeAlso: #2284,#2288
  919.  
  920. (Table 2288)
  921. Call NESL function DeRegisterEventConsumer with:
  922.     BX = 0005h
  923.     ES:SI -> CECB previously passed to RegisterEventConsumer (see #2292)
  924. Return: AX = completion code (0h, 8002h, 8008h) (see #2289)
  925.     ES:SI -> still points to CECB
  926.     BP,DS,STACK preserved
  927. Desc:    Allows a module to de-register as a consumer of a given event class
  928. SeeAlso: #2285,#2287
  929.  
  930. (Table 2289)
  931. Values for NESL Error code:
  932.  0000h    Successful
  933.  8002h    Bad Parameter
  934.  8005h    Fail
  935.  8008h    Bad Command
  936.  
  937. Format of NESL Configuration Table:
  938. Offset    Size    Description    (Table 2290)
  939.  00h    WORD    NESL_Cfg_MajVer     Major Version of this table (=1)
  940.  02h    WORD    NESL_Cfg_MinVer     Minor Version of this table (=0)
  941.  04h    DWORD    NESL_Cfg_ModLName   -> ASCIZ long name of NESL module
  942.         (typically -> "NetWare Event Service Layer for 16-Bit DOS")
  943.  08h    DWORD    NESL_Cfg_ModSName   -> ASCIZ short name of NESL module
  944.         (typically -> "NESL")
  945.  0Ch    WORD    NESL_Cfg_ModMajVer  Major Version of NESL itself (=1)
  946.  0Eh    WORD    NESL_Cfg_ModMinVer  Minor Version of NESL itself (=0)
  947.  
  948. Format of NESL Producer Event Control Block (PECB):
  949. Offset    Size    Description    (Table 2291)
  950.  00h    WORD    PECB_MajVer  Major Version of this structure (=1)
  951.  02h    WORD    PECB_MinVer  Minor Version of this structure (=0)
  952.  04h    DWORD    PECB_NextProducer   -> next PECB.  NULL if last.
  953.  08h    DWORD    PECB_ClassName        -> ASCIZ string identifying event
  954.                       class (see #2295)
  955.  0Ch    DWORD    PECB_ConsumerList   -> list of consumers for this event class
  956.  10h    DWORD    PECB_DataPtr        -> points to additional data during events
  957.  14h    DWORD    PECB_Flags
  958.         Bit 0    =0  consumers should be called "top down" for this
  959.                 event class.  (OSI level 7 down to OSI level 1)
  960.             =1  consumers should be called "bottom up"
  961.         Bits 1-31   Reserved =0
  962.  18h  8 BYTEs    PECB_Reserved (all zeros)
  963. Note:    Although the event producer provides the memory for the PECB, the
  964.       NESL module controls this memory until the event class is
  965.       de-registered.
  966.     While owned by NESL, this structure should be treated as read-only,
  967.       except for the PECB_DataPtr field.
  968.  
  969. Format of NESL Consumer Event Control Block (CECB):
  970. Offset    Size    Description    (Table 2292)
  971.  00h    WORD    CECB_MajVer  Major Version of this structure (=1)
  972.  02h    WORD    CECB_MinVer  Minor Version of this structure (=0)
  973.  04h    DWORD    CECB_NextConsumer   -> next CECB.  NULL if last.
  974.  08h    DWORD    CECB_ClassName        -> ASCIZ string identifying event
  975.                       class (see #2295)
  976.  0Ch    DWORD    CECB_NotifProc        -> FAR CALL event handler (see #2293)
  977.  10h    WORD    CECB_OSILevel
  978.         Bits 4-7 = OSI Layer of this module (1 through 7)
  979.         Bits 0-3 = relative ordering with other modules on same layer
  980.  13h 14 BYTEs    CECB_Reserved (all zeros)
  981. Note:    Although the event consumer provides the memory for the CECB, the
  982.       NESL module controls this memory until the consumer is de-registered.
  983.     While owned by NESL, this structure should be treated as read-only,
  984.  
  985. (Table 2293)
  986. Values NESL Consumer Notification Procedure is called with:
  987.     ES:SI -> Event Parameter Block (EPB) (see #2294)
  988. Return: AX = completion code (0000h, 8005h) (see #2289)
  989.     ES:SI -> still points to EPB
  990. Desc:    Called by NESL to notify the consumer when an event has occurred in
  991.       an event class for which it has registered.
  992. SeeAlso: #2292
  993.  
  994. Format of NESL Event Parameter Block (EPB):
  995. Offset    Size    Description    (Table 2294)
  996.  00h    WORD    EPB_MajVer  Major Version of this structure (=1)
  997.  02h    WORD    EPB_MinVer  Minor Version of this structure (=0)
  998.  04h    DWORD    EPB_ClassName  -> ASCIZ string identifying event class
  999.                   (see #2295)
  1000.  08h    DWORD    EPB_EventName  -> ASCIZ string identifying event within
  1001.                   class (see #2296)
  1002.  0Ch    DWORD    EPB_ModuleName -> ASCIZ string identifying module
  1003.                   producing event
  1004.  10h    DWORD    EPB_DataPtr0   -> event-defined data or NULL if not used
  1005.  14h    DWORD    EPB_DataPtr1   -> event-defined data or NULL if not used
  1006.  18h  8 BYTEs    EPB_Reserved (all zeros)
  1007.  
  1008. (Table 2295)
  1009. Values for NESL Event Class Names:
  1010.  Event Class        Description
  1011.  -------------------    -----------------------------------------
  1012.  Service Suspend    Suspension of a service.  Called top-down.
  1013.  Service Resume        Resumption/availability of a service. Called bottom-up.
  1014.  Service/Status Change    Change in status or level of service.  Called top-down.
  1015.  Suspend Request    Request to suspend a service.  Called bottom-up.
  1016. Note:    Contact Novell Labs to register new event classes.
  1017.  
  1018. (Table 2296)
  1019. Values for NESL Event Names:
  1020.  Event Name            Class            Description
  1021.  --------------------------    -------------        ---------------------------
  1022.  MLID Cable Disconnect        Service Suspend        Cable disconnected from NIC
  1023.  MLID Card Removal        Service Suspend        PCMCIA card removed
  1024.  MLID Hardware Failure        Service Suspend        Serious hardware
  1025.                               failure in NIC
  1026.  MLID Not In Range        Service Suspend        Wireless access point
  1027.                               is out of range
  1028.  MLID Shutdown            Service Suspend        MLID was shut down
  1029.  MLID Media Access Denied    Service Suspend        Access to physical
  1030.                               medium unsuccessful
  1031.  MLID Cable Reconnect        Service Resume        Cable re-connected to NIC
  1032.  MLID Card Insertion Complete    Service Resume        PCMCIA card inserted
  1033.  MLID In Range            Service Resume        Wireless access point
  1034.                               in range
  1035.  MLID Reset            Service Resume        MLID was just reset
  1036.  MLID Access Point Change    Serv/Status Change  Station has moved to
  1037.                               new access point
  1038.  MLID Speed Change        Serv/Status Change  Change in communic. speed
  1039. Note:    Contact Novell Labs to register new event names.
  1040.     For all predefined events above, EPB_DataPtr0 (see #2294) points
  1041.       to the MLID Configuration table (see AX=C000h"ODI") for the
  1042.       affected MLID.
  1043. --------N-2FC000-----------------------------
  1044. INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
  1045.     AX = C000h
  1046. Return: AL = FFh if installed
  1047.         SI = segment of resident portion
  1048. Program: NETWARN is a utility supplied with NetWare Connect to warn a
  1049.       remote dialup user when programs are about to be loaded slowly over
  1050.       the modem link.
  1051. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1052. Note:    on return, verify that it is NETWARN responding by examining signature
  1053.       at in NETWARN's data table in the resident segment (see #2297)
  1054. SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
  1055.  
  1056. Format of NETWARN Configuration structure:
  1057. Offset    Size    Description    (Table 2297)
  1058.  103h 7 BYTEs    signature string "NETWARN"
  1059.  10Ah    BYTE    major version in ASCII (="1")
  1060.  10Bh    BYTE    minor version in ASCII (="0")
  1061.  10Ch    DWORD    minimum size of EXE cared about in bytes (/S=xxxx)
  1062.  110h    WORD    same value in kilobytes (see #2298 [bit 4])
  1063.  112h    BYTE    multiplex code (AH value) actually being used
  1064.  113h    WORD    options (see #2298)
  1065.  115h    DWORD    INT 21h vector before NETWARN loaded
  1066.  119h    DWORD    INT 2Fh vector before NETWARN loaded
  1067.  11Dh 16 BYTEs    ASCIIZ local name of last device which was checked
  1068.  12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
  1069. Note:    the specified offsets are from the start of the resident segment
  1070.  
  1071. Bitfields for NETWARN options:
  1072. Bit(s)    Description    (Table 2298)
  1073.  0    ??? (=0)
  1074.  1    /U (Unload) selected (never in resident)
  1075.  2    /E (Enabled) Will trap & check EXEC's
  1076.  3    /D (Disabled) No EXEC checking done
  1077.  4    /S (Size) was set (see #2297 [offsets 010Ch and 0110h])
  1078.  5    /P (Path shown)
  1079.  6    /H or /? (Help) (never in resident)
  1080. SeeAlso: #2297
  1081. --------f-2FC000-----------------------------
  1082. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  1083.     AX = C000h
  1084. Return: AL = FFh if installed
  1085.        ES:DI -> signature string "FN32 32CHAR TSR"
  1086. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  1087. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  1088.       managing dictionary files in each directory which contains long
  1089.       filenames
  1090. --------M-2FC000-----------------------------
  1091. INT 2F - QMR - INSTALLATION CHECK
  1092.     AX = C000h
  1093. Return: AL = FFh if installed
  1094.         ES:DI -> signature string "QMR1!"
  1095. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  1096.       service interrupt (int 33h) and substitutes a fast software
  1097.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  1098. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1099. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  1100. --------V-2FC000-----------------------------
  1101. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  1102.     AX = C000h
  1103. Return: AL = FFh if installed
  1104.         BX = segment of resident code
  1105. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  1106.       Javurek
  1107. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  1108. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  1109.       resident code (addressed through BX) against its own copy of the
  1110.       resident code to complete the installation check
  1111. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  1112. Index:    screen saver;VGAsave
  1113. --------V-2FC000-----------------------------
  1114. INT 2F - AD-DOS - INSTALLATION CHECK
  1115.     AX = C000h
  1116. Return: AL = FFh if installed
  1117.         BX = 4144h ('AD')
  1118.         CX = 2D44h ('-D')
  1119.         DX = 4F53h ('OS')
  1120. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1121.       MS Windows
  1122. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1123. SeeAlso: AX=C001h"AD-DOS",AX=C003h"AD-DOS",AX=C005h"AD-DOS",AX=C007h"AD-DOS"
  1124. SeeAlso: AX=C009h"AD-DOS",AX=C020h"AD-DOS",INT 14/AX=AA01h
  1125. Index:    screen saver;AD-DOS
  1126. --------U-2FC000-----------------------------
  1127. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  1128.     AX = C000h
  1129. Return: AL = FFh if installed
  1130.         ES = segment of resident code
  1131. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  1132.       with 3-mode floppy drives to read Wang document diskettes
  1133. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1134. Note:    The installation check is completed by comparing the resident code
  1135.       with the copy in the transient program
  1136. --------i-2FC000-----------------------------
  1137. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  1138.     AX = C000h
  1139. Return: AL = FFh if multiplex number in use
  1140.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  1141. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  1142.       ASPI host manager; it is part of the Personal Measure system
  1143.       activity monitor from Spirit of Performance, Inc.
  1144. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1145. SeeAlso: AX=C000h"PMEASURE"
  1146. --------i-2FC000-----------------------------
  1147. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  1148.     AX = C000h
  1149. Return: AL = FFh if multiplex number in use
  1150.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  1151. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  1152.       is part of the Personal Measure system activity monitor from Spirit
  1153.       of Performance, Inc.
  1154. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1155. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  1156.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  1157. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  1158. --------i-2FC000-----------------------------
  1159. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  1160.     AX = C000h
  1161. Return: AL = FFh if installed
  1162.     ES:DI -> signature string "PMEASUREHOOK"
  1163.     AX = C000 if not installed, per mux id conventions
  1164.     DH = major release number (binary)
  1165.     DL = minor release number (binary)
  1166. Program: The Personal Measure system activity monitor from Spirit of
  1167.       Performance, Inc. uses an extensible series of modules to hook
  1168.       into various operating system interfaces and monitor system calls.
  1169.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  1170.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  1171.       share the same mux id.
  1172. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1173. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  1174. --------c-2FC000-----------------------------
  1175. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  1176.     AX = C000h
  1177. Return: AL = FFh if installed
  1178.         SI = signature value 20D6h
  1179.         DI = signature value 8761h
  1180.         ES:BX -> configuration table (see #2299)
  1181.         CX = ??? (0300h)
  1182.         DX = ??? (0020h)
  1183. Program: PCACHE is the resident print spooler portion of PrintCache by
  1184.       LaserTools; it may use either memory or disk space to spool output
  1185. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1186. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  1187.  
  1188. Format of PrintCache configuration table:
  1189. Offset    Size    Description    (Table 2299)
  1190.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  1191.  1Ah  2 BYTEs    ???
  1192.  1Ch    DWORD    -> data table (see #2300)
  1193.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  1194.  24h  5 BYTEs    ???
  1195.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  1196.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  1197.  37h    WORD    buffered port BIOS port number
  1198.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  1199.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  1200.  40h    WORD    physical port BIOS port number
  1201.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  1202.  47h    BYTE    port driver IRQ
  1203.  48h 21 BYTEs    ???
  1204.  5Dh    WORD    buffer size in K
  1205.  5Fh 27 BYTEs    ???
  1206.  7Ah    BYTE    popup hotkey shift states (see #0481 at INT 16/AH=02h)
  1207.  7Bh    BYTE    popup hotkey scan code (see #0005 at INT 09"IRQ1")
  1208.  7Ch  4 BYTEs    ???
  1209.  80h 20 BYTEs    ASCIZ printer type name
  1210.     ???
  1211.  
  1212. Format of PrintCache data table:
  1213. Offset    Size    Description    (Table 2300)
  1214.  00h  2 BYTEs    ???
  1215.  02h    DWORD    -> ??? entry point
  1216.     ???
  1217. --------U-2FC000-----------------------------
  1218. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  1219.     AX = C000h
  1220. Return: AL = FFh if installed
  1221.         BX = program ID (see #2301)
  1222.         CX = 464Bh (signature "FK")
  1223.         DX = revision number (DH = major, DL = minor)
  1224.         ES = resident segment of TSR
  1225. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  1226. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  1227.  
  1228. (Table 2301)
  1229. Values for Frank Kintrup TSR program ID:
  1230.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  1231.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  1232.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  1233.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  1234.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  1235. --------K-2FC000-----------------------------
  1236. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  1237.     AX = C000h
  1238. Return: AL = FFh if possibly installed
  1239. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  1240. SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  1241. --------V-2FC000-----------------------------
  1242. INT 2F - DIMWIT - INSTALLATION CHECK
  1243.     AX = C000h
  1244. Return: AL = FFh if installed
  1245.         ES:DI -> signature string "DIMDOS" or "DIMWIN"
  1246. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  1247. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1248. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  1249. Index:    screen saver;DIMWIT
  1250. --------F-2FC000BX444B-----------------------
  1251. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  1252.     AX = C000h
  1253.     BX = 444Bh ('DK')
  1254.     CX = 4A4Eh ('AN')
  1255. Return: AL = status
  1256.         00h not installed, OK to install
  1257.         FFh installed
  1258.         BX = 646Bh ('dk')
  1259.         CX = 6A6Eh ('an')
  1260. Range:    AH=C0h to AH=FFh, selected automatically
  1261. SeeAlso: AH=C0h"MTEZ"
  1262. --------V-2FC000-----------------------------
  1263. INT 2F U - TSENGP.COM - INSTALLATION CHECK
  1264.     AX = C000h
  1265. Return: AL = status
  1266.         00h not installed, OK to install
  1267.         FFh installed
  1268.         DS = segment of resident code
  1269. Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
  1270.       between some applications and Tseng ET4000-based video adapters
  1271. Range:    AH=C0h to AH=FFh, selected automatically
  1272. Note:    the installation check is completed by comparing the first eleven
  1273.       bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
  1274.       80h FCh 07h 74h 05h EAh)
  1275. --------N-2FC000-----------------------------
  1276. INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
  1277.     AX = C000h
  1278. Return: AL = FFh if one of the components is installed
  1279.     CX:BX -> signature within LLRA component:
  1280.         "TSI_LapLinkCore" for LLRA1.EXE
  1281.         "TSI_Blackbird"   for LLRA2.EXE
  1282.         "TSI_Redirector"  for LLRA3.EXE
  1283.         "TSI_Compression" for LLRA4.EXE
  1284.     DL = major version number
  1285.     DH = minor version number
  1286. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1287. Note:    LapLink components are installed in the order listed above, but not
  1288.       necessarily all four; each gets its own multiplex number (default
  1289.       C0h-C3h)
  1290. SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
  1291. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  1292. SeeAlso: AX=C3F1h"LapLink"
  1293. --------M-2FC001-----------------------------
  1294. INT 2F - QMR - REQUEST HARDWARE RESET
  1295.     AX = C001h
  1296. Return: ES = QMR code segment
  1297.     AL destroyed
  1298. Desc:    this function is used to force a full mouse reset when QMR is installed
  1299. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  1300. --------V-2FC001-----------------------------
  1301. INT 2F - DIMWIT - GET CONFIGURATION DATA
  1302.     AX = C001h
  1303. Return: ES:DI -> TSR configuration data (see #2302)
  1304. Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
  1305. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1306. SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
  1307. Index:    screen saver;DIMWIT
  1308.  
  1309. Format of DIMWIT TSR configuration data:
  1310. Offset    Size    Description    (Table 2302)
  1311.  00h    WORD    blanking delay in clock ticks
  1312.  02h    BYTE    instant-blanking hotkey scan code (see #0005)
  1313.         Ctrl and Alt must also be pressed
  1314. --------V-2FC001ES0000-----------------------
  1315. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  1316.     AX = C001h
  1317.     ES = 0000h
  1318. Return: AL = 00h if successful
  1319.         ES = AD-DOS TSR Code Segment
  1320. SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
  1321. Index:    screen saver;AD-DOS
  1322. --------c-2FC001-----------------------------
  1323. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  1324.     AX = C001h
  1325. Return: AL = FFh if installed
  1326.         ES:BX -> ???
  1327.         ES:DX -> ???
  1328.         ES:SI -> ???
  1329.         ES:DI -> ??? (equivalent to AX=C002h)
  1330. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  1331. --------U-2FC001-----------------------------
  1332. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  1333.     AX = C001h
  1334. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  1335. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  1336. --------K-2FC001CX03FB-----------------------
  1337. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
  1338.     AX = C001h
  1339.     CX = 03FBh return address to continue uninstall if possible
  1340. Return: program uninstalled
  1341. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  1342. SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
  1343. --------i-2FC001-----------------------------
  1344. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  1345.     AX = C001h
  1346.     DX = segment of PMEASURE.EXE or 0000h
  1347.     BX = offset in PMEASURE.EXE or 0000h
  1348.     CX = offset in PMEASURE.EXE or 0000h
  1349. Return: None
  1350. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  1351.       is part of the Personal Measure system activity monitor from Spirit
  1352.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  1353.       modules whether or not it is running and to pass information about
  1354.       shared data and procedures.
  1355. Warning: This information documents a function that is private to Personal
  1356.       Measure and is provided as information only.    It should NOT be called
  1357.       by any software other than Personal Measure.
  1358. SeeAlso: AX=C000h"PERSONAL MEASURE"
  1359. --------V-2FC002-----------------------------
  1360. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  1361.     AX = C002h
  1362. Return: AL = 00h if successful
  1363.         BX = status
  1364.         0000h no input since last check
  1365.         0001h new input available
  1366. Note:    this call also resets the new-input flag
  1367. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  1368. Index:    screen saver;AD-DOS
  1369. --------M-2FC002-----------------------------
  1370. INT 2F - QMR - DISABLE QMR
  1371.     AX = C002h
  1372. Return: ES = QMR code segment
  1373.     AL destroyed
  1374. Desc:    this call temporarily disables QMR
  1375. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  1376. --------c-2FC002-----------------------------
  1377. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  1378.     AX = C002h
  1379. Return: AX = ??? in K
  1380.     BX = size of print buffer in K
  1381. Program: PCACHE is the resident print spooler portion of PrintCache by
  1382.       LaserTools; it may use either memory or disk space to spool output
  1383. SeeAlso: AX=C000h"PCACHE"
  1384. --------U-2FC002-----------------------------
  1385. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  1386.     AX = C002h
  1387. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  1388. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  1389. --------N-2FC002-----------------------------
  1390. INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
  1391.     AX = C002h
  1392.     details not yet available
  1393. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1394. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  1395. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  1396. --------V-2FC003-----------------------------
  1397. INT 2F - AD-DOS - SET MINUTES TO WAIT
  1398.     AX = C003h
  1399.     BX = minutes to wait before blanking screen
  1400. Return: AL = 00h if successful
  1401. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1402.       MS Windows
  1403. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1404. Note:    this call also resets the delay timer
  1405. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  1406. Index:    screen saver;AD-DOS
  1407. --------M-2FC003-----------------------------
  1408. INT 2F - QMR - ENABLE QMR
  1409.     AX = C003h
  1410. Return: ES = QMR code segment
  1411.     AL destroyed
  1412. Desc:    this call enables QMR after it has been disabled
  1413. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  1414. --------c-2FC003-----------------------------
  1415. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  1416.     AX = C003h
  1417. Return: BX destroyed
  1418. SeeAlso: AX=C004h"PCACHE"
  1419. --------V-2FC004-----------------------------
  1420. INT 2F - AD-DOS - GET MINUTES TO WAIT
  1421.     AX = C004h
  1422. Return: AL = 00h if successful
  1423.         BX = minutes to wait before blanking screen
  1424. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  1425. Index:    screen saver;AD-DOS
  1426. --------c-2FC004-----------------------------
  1427. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  1428.     AX = C004h
  1429. Return: BX destroyed
  1430. SeeAlso: AX=C003h"PCACHE"
  1431. --------V-2FC005-----------------------------
  1432. INT 2F - AD-DOS - SET BLANKER STATUS
  1433.     AX = C005h
  1434.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  1435. Return: AL = 00h if successful
  1436. SeeAlso: AX=C006h"AD-DOS"
  1437. Index:    screen saver;AD-DOS
  1438. --------c-2FC005-----------------------------
  1439. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1440.     AX = C005h
  1441.     ???
  1442. Return: BX destroyed
  1443.     ???
  1444. Program: PCACHE is the resident print spooler portion of PrintCache by
  1445.       LaserTools; it may use either memory or disk space to spool output
  1446. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1447. SeeAlso: AX=C000h"PCACHE"
  1448. --------V-2FC006-----------------------------
  1449. INT 2F - AD-DOS - GET BLANKER STATUS
  1450.     AX = C006h
  1451. Return: AL = 00h if successful
  1452.         BX = current state of screen blanker (0000h inactive, 0001h active)
  1453. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1454.       MS Windows
  1455. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1456. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  1457. Index:    screen saver;AD-DOS
  1458. --------c-2FC006-----------------------------
  1459. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1460.     AX = C006h
  1461.     ???
  1462. Return: BX destroyed
  1463.     ???
  1464. Note:    this function appears to be identical to AX=C007h
  1465. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  1466. --------V-2FC007-----------------------------
  1467. INT 2F - AD-DOS - SET HOT KEY
  1468.     AX = C007h
  1469.     BX = hot key
  1470.     CL = hot key shift status
  1471. Return: AL = 00h if successful
  1472. SeeAlso: AX=C008h"AD-DOS"
  1473. Index:    screen saver;AD-DOS
  1474. --------c-2FC007-----------------------------
  1475. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1476.     AX = C007h
  1477.     ???
  1478. Return: BX destroyed
  1479.     ???
  1480. Note:    this function appears to be identical to AX=C006h
  1481. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  1482. --------V-2FC008-----------------------------
  1483. INT 2F - AD-DOS - GET CURRENT HOT KEY
  1484.     AX = C008h
  1485. Return: AX = status
  1486.         0000h successful
  1487.         BX = Hot Key
  1488.         CL = Hot Key Shift Status
  1489.         0008h otherwise
  1490. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  1491. Index:    screen saver;AD-DOS
  1492. --------c-2FC008-----------------------------
  1493. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  1494.     AX = C008h
  1495. Return: BX destroyed
  1496. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  1497. --------V-2FC009-----------------------------
  1498. INT 2F - AD-DOS - UNBLANK MONITOR
  1499.     AX = C009h
  1500. Return: AL = 00h if successful
  1501. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1502.       MS Windows
  1503. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1504. Note:    this function works by simulating keyboard activity
  1505. Index:    screen saver;AD-DOS
  1506. --------c-2FC009-----------------------------
  1507. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  1508.     AX = C009h
  1509. Return: BX destroyed
  1510. Program: PCACHE is the resident print spooler portion of PrintCache by
  1511.       LaserTools; it may use either memory or disk space to spool output
  1512. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1513. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  1514. --------V-2FC00A-----------------------------
  1515. INT 2F - AD-DOS - ???
  1516.     AX = C00Ah
  1517. Return: AX = status
  1518.         0000h successful
  1519.         BH = ??
  1520.         BL = ??
  1521.         000Ah failed
  1522. Index:    screen saver;AD-DOS
  1523. --------c-2FC00A-----------------------------
  1524. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1525.     AX = C00Ah
  1526.     ???
  1527. Return: AH = bit flags
  1528.         bit 5: ???
  1529.     AL = bit flags
  1530.         bit 4: ???
  1531.         bit 3: ???
  1532.     BX destroyed
  1533.     ???
  1534. SeeAlso: AX=C000h"PCACHE"
  1535. --------V-2FC00B-----------------------------
  1536. INT 2F - AD-DOS - ???
  1537.     AX = C00Bh
  1538. Return: AX = status
  1539.         0000h successful
  1540.         000Bh failed
  1541. Index:    screen saver;AD-DOS
  1542. --------c-2FC00B-----------------------------
  1543. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  1544.     AX = C00Bh
  1545. Return: BX destroyed
  1546. SeeAlso: AX=C000h"PCACHE"
  1547. --------V-2FC00C-----------------------------
  1548. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  1549.     AX = C00Ch
  1550. Return: AX = status
  1551.         0000h successful
  1552.         000Ch failed
  1553. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  1554.       MS Windows
  1555. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1556. Index:    screen saver;AD-DOS
  1557. --------c-2FC00C-----------------------------
  1558. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  1559.     AX = C00Ch
  1560. Return: AX = ??? (0000h)
  1561.     BX = ??? (0000h)
  1562.     CX = ??? (0100h)
  1563.     DL = ???
  1564.     DH = ???
  1565. SeeAlso: AX=C000h"PCACHE"
  1566. --------c-2FC00D-----------------------------
  1567. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  1568.     AX = C00Dh
  1569.     DL = ???
  1570. Return: BX destroyed
  1571. Program: PCACHE is the resident print spooler portion of PrintCache by
  1572.       LaserTools; it may use either memory or disk space to spool output
  1573. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1574. SeeAlso: AX=C000h"PCACHE"
  1575. --------V-2FC00E-----------------------------
  1576. INT 2F - AD-DOS - SET PASSWORD STATUS
  1577.     AX = C00Eh
  1578.     BX = new state (0000h disabled, 0001h enabled)
  1579. Return: ???
  1580. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  1581. Index:    screen saver;AD-DOS
  1582. --------c-2FC00E-----------------------------
  1583. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  1584.     AX = C00Eh
  1585.     ES:DX -> ???
  1586. Return: BX destroyed
  1587. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  1588.       but ignored if already set; a counter is incremented
  1589. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  1590. --------V-2FC00F-----------------------------
  1591. INT 2F - AD-DOS - GET PASSWORD STATUS
  1592.     AX = C00Fh
  1593. Return: BX = current state (0000h disabled, 0001h enabled)
  1594. SeeAlso: AX=C00Eh"AD-DOS"
  1595. Index:    screen saver;AD-DOS
  1596. --------c-2FC00F-----------------------------
  1597. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  1598.     AX = C00Fh
  1599. Return: BX destroyed
  1600. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  1601.       internal pointer variable to 0000h:0000h when it reaches zero
  1602. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  1603. --------c-2FC010-----------------------------
  1604. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  1605.     AX = C010h
  1606.     CX = index of ??? table (00h-02h, others treated as 00h)
  1607.     SI = offset into data table
  1608. Return: AL = byte at specified offset into table
  1609.     BX destroyed
  1610. SeeAlso: AX=C000h"PCACHE"
  1611. --------c-2FC011-----------------------------
  1612. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  1613.     AX = C011h
  1614. Return: AX = ??? (0007h)
  1615.     BX = ??? (0001h)
  1616.     CH = ???
  1617.     CL = ???
  1618. SeeAlso: AX=C000h"PCACHE"
  1619. --------c-2FC012-----------------------------
  1620. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  1621.     AX = C012h
  1622. Return: AX = ???
  1623.     BX = ???
  1624.     CX = ???
  1625.     DX = ???
  1626. SeeAlso: AX=C000h"PCACHE"
  1627. --------c-2FC013-----------------------------
  1628. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1629.     AX = C013h
  1630.     ???
  1631. Return: BX destroyed
  1632.     ???
  1633. Program: PCACHE is the resident print spooler portion of PrintCache by
  1634.       LaserTools; it may use either memory or disk space to spool output
  1635. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1636. SeeAlso: AX=C000h"PCACHE"
  1637. --------c-2FC014-----------------------------
  1638. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1639.     AX = C014h
  1640.     ???
  1641. Return: BX destroyed
  1642.     ???
  1643. SeeAlso: AX=C000h"PCACHE"
  1644. --------c-2FC015-----------------------------
  1645. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1646.     AX = C015h
  1647.     ???
  1648. Return: BX destroyed
  1649.     ???
  1650. SeeAlso: AX=C000h"PCACHE"
  1651. --------c-2FC016-----------------------------
  1652. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  1653.     AX = C016h
  1654. Return: BX destroyed
  1655. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  1656. --------c-2FC017-----------------------------
  1657. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  1658.     AX = C017h
  1659. Return: BX destroyed
  1660. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  1661. --------c-2FC018-----------------------------
  1662. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1663.     AX = C018h
  1664.     ???
  1665. Return: BX destroyed
  1666.     ???
  1667. Note:    the first instruction of this function is an indirect jump which points
  1668.       at a RET by default
  1669. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  1670. --------c-2FC019-----------------------------
  1671. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1672.     AX = C019h
  1673.     ???
  1674. Return: BX destroyed
  1675.     ???
  1676. Note:    the first instruction of this function is an indirect jump which points
  1677.       at a RET by default
  1678. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  1679. --------c-2FC01A-----------------------------
  1680. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  1681.     AX = C01Ah
  1682. Return: BX destroyed
  1683. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  1684. --------c-2FC01B-----------------------------
  1685. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  1686.     AX = C01Bh
  1687. Return: BX destroyed
  1688. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  1689. --------c-2FC01C-----------------------------
  1690. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  1691.     AX = C01Ch
  1692.     ???
  1693. Return: AX = ???
  1694.     BX destroyed
  1695. SeeAlso: AX=C000h"PCACHE"
  1696. --------c-2FC01D-----------------------------
  1697. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  1698.     AX = C01Dh to C01Fh
  1699. Return: BX destroyed
  1700. Program: PCACHE is the resident print spooler portion of PrintCache by
  1701.       LaserTools; it may use either memory or disk space to spool output
  1702. Range:    AH=C0h to AH=FFh, selected by commandline switch
  1703. SeeAlso: AX=C000h"PCACHE"
  1704. --------V-2FC020-----------------------------
  1705. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  1706.     AX = C020h
  1707. Return: AL = 00h if successful
  1708.         BX = VxD API Status
  1709.         0000h no error
  1710.         0001h error
  1711.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  1712.               is running
  1713.         0200h VM API entry point not found (VxD not installed)
  1714. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1715. Note:    this call resets the VxD API Status to zero
  1716. SeeAlso: AX=1602h,AX=1607h"CALL OUT API"
  1717. Index:    screen saver;AD-DOS
  1718. --------V-2FC04E-----------------------------
  1719. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  1720.     AX = C04Eh
  1721. Return: AL = 4Fh if Explosiv is running but not memory-resident
  1722. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  1723.       by H&G Software (Reidar Gresseth and Chris Hook)
  1724. Range:    AH=C0h to AH=C9h, selected by configuration
  1725. SeeAlso: AX=C050h
  1726. Index:    screen saver;Explosiv
  1727. --------V-2FC050-----------------------------
  1728. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  1729.     AX = C050h
  1730. Return: AL = 51h if installed
  1731.     ---v3.0+ ---
  1732.         BX = interval in clock ticks
  1733.         CH = animation display color (00h mono, 01h tinge, 02h color)
  1734.         CL = animation delay factor
  1735.         DH = animation parameters
  1736.         DL = INT 10 checking (00h on, 01h off)
  1737.         SI = number of bytes available for animation code
  1738.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  1739. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  1740.       by H&G Software (Reidar Gresseth and Chris Hook)
  1741. Range:    AH=C0h to AH=C9h, selected by configuration
  1742. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  1743. SeeAlso: INT 14/AX=AA01h
  1744. Index:    screen saver;Explosiv
  1745. --------V-2FC052-----------------------------
  1746. INT 2F - Explosiv v2.00+ - UNINSTALL
  1747.     AX = C052h
  1748.     DX:BX = address to return to on successful uninstall
  1749. Return: at specified address if successful
  1750.     AL = 53h on error
  1751. Note:    specified return address must have the segment of the caller's PSP
  1752. SeeAlso: AX=C050h
  1753. Index:    screen saver;Explosiv
  1754. --------V-2FC054-----------------------------
  1755. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  1756.     AX = C054h
  1757. Return: AL = delay factor
  1758. SeeAlso: AX=C057h
  1759. Index:    screen saver;Explosiv
  1760. --------V-2FC054-----------------------------
  1761. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  1762.     AX = C054h
  1763.     BX = new interval in clock ticks
  1764.     CH = animation display color (00h mono, 01h tinge, 02h color)
  1765.     CL = animation delay factor
  1766.     DH = animation parameters
  1767.     DL = INT 10 checking (00h on, 01h off)
  1768. SeeAlso: AX=C050h
  1769. Index:    screen saver;Explosiv
  1770. --------V-2FC055-----------------------------
  1771. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  1772.     AX = C055h
  1773.     BX = new interval in clock ticks
  1774. Index:    screen saver;Explosiv
  1775. --------V-2FC056-----------------------------
  1776. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  1777.     AX = C056h
  1778.     BL = animated display type (00h mono, 01h color)
  1779. SeeAlso: AX=C058h"v2.x"
  1780. Index:    screen saver;Explosiv
  1781. --------V-2FC056-----------------------------
  1782. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  1783.     AX = C056h
  1784.     BX = new state
  1785.         0000h disabled
  1786.         0100h enabled
  1787.         0101h enabled, but never blank
  1788.         0102h enabled, always blank
  1789. --------V-2FC057-----------------------------
  1790. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  1791.     AX = C057h
  1792.     BL = delay factor
  1793. SeeAlso: AX=C054h"v2.x"
  1794. Index:    screen saver;Explosiv
  1795. --------V-2FC058-----------------------------
  1796. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  1797.     AX = C058h
  1798.     BL = animation parameter
  1799. Note:    the animation parameter has different interpretations for each display
  1800. SeeAlso: AX=C056h"v2.x"
  1801. Index:    screen saver;Explosiv
  1802. --------V-2FC058-----------------------------
  1803. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  1804.     AX = C058h
  1805.     BX = file handle for file containing display code
  1806.     CX = number of bytes to load
  1807.     DX = offset at which animation code should be loaded
  1808. Return: AL = status (see #2303)
  1809. Note:    if AL=00h-03h on return, the file will be closed
  1810. Index:    screen saver;Explosiv
  1811.  
  1812. (Table 2303)
  1813. Values for Explosiv function status:
  1814.  00h    successful
  1815.  01h    code too large to available space
  1816.  02h    no data read, load aborted
  1817.  03h    incomplete load, default blanking display loaded instead
  1818.  58h    unexpected offset in DX
  1819. --------V-2FC059-----------------------------
  1820. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  1821.     AX = C059h
  1822. Note:    clears flag set by AX=C05Ah
  1823. SeeAlso: AX=C05Ah
  1824. Index:    screen saver;Explosiv
  1825. --------V-2FC05A-----------------------------
  1826. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  1827.     AX = C05Ah
  1828.     BL = ???
  1829. Note:    sets flag cleared by AX=C059h then stores BL
  1830. SeeAlso: AX=C059h,AX=C05Bh
  1831. Index:    screen saver;Explosiv
  1832. --------V-2FC05B-----------------------------
  1833. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  1834.     AX = C05Bh
  1835.     BL = animation display
  1836. Note:    this function fails silently if the requested display is not in memory
  1837. SeeAlso: AX=C05Ah,AX=C05Ch
  1838. Index:    screen saver;Explosiv
  1839. --------V-2FC05C-----------------------------
  1840. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  1841.     AX = C05Ch
  1842.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  1843. SeeAlso: AX=C05Bh
  1844. Index:    screen saver;Explosiv
  1845. --------v-2FC080-----------------------------
  1846. INT 2F U - AMI IAM.SYS - INSTALL ??? CALLBACK
  1847.     AX = C080h
  1848.     CX:DX -> ??? callback
  1849.     DI = segment of ??? buffer (first WORD copied into IAM.SYS)
  1850. Program: IAM.SYS is the Illegal Activity Monitor portion of American
  1851.       Megatrends, Inc.'s PC-Defender anti-virus product
  1852. Note:    also sets ??? flag
  1853. SeeAlso: AX=C081h
  1854.  
  1855. Format of IAM.SYS buffer:
  1856. Offset    Size    Description    (Table 2304)
  1857.  00h    BYTE    ???
  1858.  01h    BYTE    ???
  1859.  02h  N BYTEs    ??? (ASCIZ strings)
  1860. --------v-2FC081-----------------------------
  1861. INT 2F U - AMI IAM.SYS - CLEAR ???
  1862.     AX = C081h
  1863. Desc:    clears the ??? flag that AX=C080h sets
  1864. SeeAlso: AX=C080h
  1865. --------K-2FC0AE-----------------------------
  1866. INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
  1867.     AX = C0AEh
  1868. Return: AX = 4453h if installed
  1869.     CX = 5259h if installed
  1870. Range:    AH=C0h to AH=FFh, selected by scanning for signature
  1871. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
  1872. --------K-2FC0AF-----------------------------
  1873. INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
  1874.     AX = C0AFh
  1875. Return: ES:DI -> buffer (behind code)
  1876. Range:    AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
  1877. SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
  1878. --------N-2FC100-----------------------------
  1879. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  1880.     AX = C100h
  1881. Return: AL = FFh if installed
  1882.         ES:SI -> signature string "STP-IPX$"
  1883.         BX = version??? (0001h for v1.00)
  1884.         DI corrupted
  1885. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  1886.       multiplex numbers to find a free one, as LSL does
  1887. SeeAlso: AX=C000h"LSL",AX=C101h
  1888. --------N-2FC101-----------------------------
  1889. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  1890.     AX = C101h
  1891. Return: AL = status???
  1892.     BX corrupted
  1893. SeeAlso: AX=C101h
  1894. --------N-2FC205-----------------------------
  1895. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  1896.     AX = C205h
  1897.     details not yet available
  1898. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1899. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
  1900. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  1901. --------N-2FC2F0-----------------------------
  1902. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  1903.     AX = C2F0h
  1904.     details not yet available
  1905. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1906. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  1907. SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
  1908. --------N-2FC2F1-----------------------------
  1909. INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
  1910.     AX = C2F1h
  1911.     details not yet available
  1912. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1913. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  1914. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
  1915. --------d-2FC300-----------------------------
  1916. INT 2F - SETWPR.COM - INSTALLATION CHECK
  1917.     AX = C300h
  1918. Return: AL = FFh if installed
  1919. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  1920. SeeAlso: AX=C302h"SETWPR"
  1921. --------k-2FC300DX0000-----------------------
  1922. INT 2F U - SpaceManager - INSTALLATION CHECK
  1923.     AX = C300h
  1924.     DX = 0000h
  1925. Return: AL = FFh if any SpaceManager programs installed
  1926.         BX = 6F73h
  1927.         CX = 6F68h
  1928. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  1929.       Systems, Inc.
  1930. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  1931. SeeAlso: AX=C300h/BX=4F53h
  1932. --------k-2FC300BX4F53-----------------------
  1933. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  1934.     AX = C300h
  1935.     BX = 4F53h ('OS')
  1936.     CX = 4F48h ('OH')
  1937.     DX = program identifier (see #2305) or 0666h for any SpaceManager prog
  1938. Return: AL = FFh if BX/CX as specified and specified program installed
  1939.         BX = 6F73h ('os')
  1940.         CX = 6F68h ('oh')
  1941. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  1942. Note:    this call is chained if BX,CX, or DX are not as specified above
  1943. SeeAlso: AX=C300h/DX=0000h
  1944.  
  1945. (Table 2305)
  1946. Values for SpaceManager program identifier:
  1947.  9000h    SMOUNT (SuperMount)
  1948.  9001h    SELECTC (SelectCompress)
  1949.  9002h    SUPERX (SuperExchange)
  1950.  9003h    FORTUNE (FortuneTeller)
  1951. --------k-2FC301-----------------------------
  1952. INT 2F U - SpaceManager - ???
  1953.     AX = C301h
  1954.     DX = program identifier (9000h,9001h,9003h) (see #2305)
  1955.     ???
  1956. Return: ???
  1957. --------N-2FC301-----------------------------
  1958. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  1959.     AX = C301h
  1960.     details not yet available
  1961. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  1962. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  1963. SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
  1964. --------k-2FC302-----------------------------
  1965. INT 2F U - SpaceManager - ENABLE PROGRAM
  1966.     AX = C302h
  1967.     DX = program identifier (9000h,9001h,9003h) (see #2305)
  1968. Return: AX destroyed
  1969. SeeAlso: AX=C303h,AX=C306h
  1970. --------d-2FC302-----------------------------
  1971. INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
  1972.     AX = C302h
  1973.     BL = new state
  1974.         00h disk may be written
  1975.         01h disk write-protected
  1976. Return: AL = FFh if installed
  1977. Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
  1978. SeeAlso: AX=C300h"SETWPR"
  1979. --------k-2FC303-----------------------------
  1980. INT 2F U - SpaceManager - DISABLE PROGRAM
  1981.     AX = C303h
  1982.     DX = program identifier (9000h,9001h,9003h) (see #2305)
  1983. Return: AX destroyed
  1984. SeeAlso: AX=C302h,AX=C306h
  1985. --------k-2FC304-----------------------------
  1986. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  1987.     AX = C304h
  1988.     DX = program identifier (9000h,9001h,9003h) (see #2305)
  1989. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  1990.     AX destroyed
  1991. --------k-2FC305DX9003-----------------------
  1992. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  1993.     AX = C305h
  1994.     DX = 9003h
  1995. Return: AX destroyed
  1996. --------k-2FC305-----------------------------
  1997. INT 2F U - SpaceManager - ???
  1998.     AX = C305h
  1999.     DX = program identifier (9000h,9001h) (see #2305)
  2000.     ???
  2001. Return: ???
  2002. --------k-2FC306-----------------------------
  2003. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  2004.     AX = C306h
  2005.     DX = program identifier (9000h,9001h,9003h) (see #2305)
  2006. Return: AL = current state (00h disabled, FAh enabled)
  2007.     AH destroyed
  2008. SeeAlso: AX=C302h,AX=C303h
  2009. --------k-2FC307DX9001-----------------------
  2010. INT 2F U - SpaceManager - SELECTC - ???
  2011.     AX = C307h
  2012.     DX = 9001h
  2013.     BX = ???
  2014.     CX = ???
  2015.     ???
  2016. Return: ???
  2017. --------k-2FC308DX9001-----------------------
  2018. INT 2F U - SpaceManager - SELECTC - ???
  2019.     AX = C308h
  2020.     DX = 9001h
  2021.     ???
  2022. Return: ???
  2023. --------N-2FC3F0-----------------------------
  2024. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  2025.     AX = C3F0h
  2026.     details not yet available
  2027. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2028. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2029. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
  2030. --------N-2FC3F1-----------------------------
  2031. INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
  2032.     AX = C3F1h
  2033.     details not yet available
  2034. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  2035. SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
  2036. SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
  2037. --------d-2FC64CBX5553-----------------------
  2038. INT 2F U - Smart Prompt - INSTALLATION CHECK
  2039.     AX = C64Ch
  2040.     BX = 5553h
  2041. Return: AX = 4CC6h if installed
  2042.     BX = 5355h if installed
  2043. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which
  2044.       forces an immediate flush of SmartDrive's (and compatible caches')
  2045.       buffers on returning to the DOS prompt
  2046. --------V-2FC700CX434C-----------------------
  2047. INT 2F u - COLAP - INSTALLATION CHECK
  2048.     AX = C700h
  2049.     CX = 434Ch  "CL"
  2050. Return: AL = FFh if installed
  2051. Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
  2052.       and brightness of color laptops by changing the VGA palette colors;
  2053.       for Toshiba laptops there are more hotkeys for shutting off display
  2054.       and harddisk.
  2055. --------v-2FC900BP0000-----------------------
  2056. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  2057.     AX = C900h
  2058.     BP = 0000h
  2059. Return: AL = FFh if installed
  2060.         BP >= 0014h
  2061. Note:    called by TBSCANX
  2062. SeeAlso: AX=C987h,AX=CA00h
  2063. --------v-2FC987-----------------------------
  2064. INT 2F U - ThunderByte??? - DISINFECT FILE???
  2065.     AX = C987h
  2066.     BX:DX -> filename
  2067.     BX:CX -> virus name
  2068. Return: AX = status
  2069.         0000h successful???
  2070. Note:    called by TBSCANX
  2071. SeeAlso: AX=CA00h
  2072. --------r-2FC9FF-----------------------------
  2073. INT 2F C - StackMan - INSTALLATION BROADCAST
  2074.     AX = C9FFh
  2075.     BL = BCD version number
  2076.     CX = number of stacks
  2077.     DX = stack size in bytes
  2078. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  2079.       which functions as a replacement for the DOS STACK= command as well
  2080.       as permitting multiple TSRs to share a pool of stack space
  2081. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  2082.       its API is available
  2083.     the installation check consists of testing for the string "STACKXXX" at
  2084.       offset 0Ah from the INT B4 handler
  2085. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  2086. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  2087. --------F-2FCA-------------------------------
  2088. INT 2F - FAXPLUS - FAX TSR
  2089.     AH = CAh
  2090.     ???
  2091. Return: ???
  2092. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  2093.       Veldman
  2094. SeeAlso: AH=2Ah"Gammafax"
  2095. --------v-2FCA00BX5442-----------------------
  2096. INT 2F - TBSCANX - INSTALLATION CHECK
  2097.     AX = CA00h
  2098.     BX = 5442h ('TB')
  2099. Return: AL = state
  2100.         00h not installed
  2101.         FFh installed
  2102.         BX = 7462h ('tb') if BX was 5442h on entry
  2103. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  2104. Note:    programs may perform virus checks on themselves, other program files,
  2105.       or their data files by invoking the TBSCANX API.
  2106. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0007h,AX=C900h
  2107. --------v-2FCA01-----------------------------
  2108. INT 2F - TBSCANX - GET STATUS
  2109.     AX = CA01h
  2110. Return: AH = BCD version number (v2.2+)
  2111.         CAh for versions before 2.2
  2112.     AL = state (00h = disabled, 01h = enabled)
  2113.     CX = number of signatures which will be searched
  2114. ---v2.0---
  2115.     BX = EMS handle, 0000h if not using EMS
  2116. ---v2.3+---
  2117.     BX = segment of swap area, 0000h if not swapped
  2118.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  2119. SeeAlso: AX=CA02h
  2120. --------v-2FCA02-----------------------------
  2121. INT 2F - TBSCANX - SET STATE
  2122.     AX = CA02h
  2123.     BL = new state (00h = disabled, 01h = enabled)
  2124. SeeAlso: AX=CA01h
  2125. --------v-2FCA03-----------------------------
  2126. INT 2F - TBSCANX - SCAN BUFFER
  2127.     AX = CA03h
  2128.     CX = size of buffer
  2129.     DS:DX -> buffer containing data to scan
  2130. Return: CF clear if no virus signatures found
  2131.         BX,ES destroyed
  2132.     CF set if signature found
  2133.         ES:BX -> ASCIZ virus name (v2.3+)
  2134.         DS:DX -> ASCIZ virus name (v2.0)
  2135.     AX,CX,DX destroyed (v2.3+)
  2136.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  2137. SeeAlso: AX=CA04h
  2138. --------v-2FCA04-----------------------------
  2139. INT 2F - TBSCANX - SCAN FILE
  2140.     AX = CA04h
  2141.     DS:DX -> filename
  2142. Return: CF clear if no virus signatures found
  2143.         BX,ES destroyed
  2144.     CF set if signature found
  2145.         ES:BX -> ASCIZ virus name
  2146.     AX,CX,DX destroyed
  2147. Note:    this function requires at least 4K free memory
  2148. SeeAlso: AX=CA03h
  2149. --------U-2FCAFEBX0000-----------------------
  2150. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  2151.     AX = CAFEh
  2152.     BX = 0000h
  2153. Return: BX = segment of resident code if installed
  2154.         0000h if not installed
  2155. SeeAlso: AX=5453h,INT 2D"AMIS"
  2156. --------F-2FCB00-----------------------------
  2157. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  2158.     AX = CB00h
  2159. Return: AL = status
  2160.         00h not installed, OK to install
  2161.         01h not installed, not OK to install
  2162.         FFh installed
  2163. Note:    AH = CBh is the default identifier, but may be reconfigured
  2164. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  2165. --------F-2FCB00BX4D53-----------------------
  2166. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  2167.     AX = CB00h
  2168.     BX = 4D53h ('MS')
  2169.     CX = 4949h ('II')
  2170. Return: AL = status
  2171.         00h not installed, OK to install
  2172.         01h not installed, not OK to install
  2173.         FFh installed
  2174.         BX = 6D73h ('ms')
  2175.         CX = 6969h ('ii')
  2176. Note:    this function is equivalent to the standard CASMGR installation check,
  2177.       but uses the additional magic values to identify which CAS is
  2178.       installed
  2179. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  2180. --------F-2FCB01-----------------------------
  2181. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  2182.     AX = CB01h
  2183.     DS:DX -> ASCIZ name of task control file
  2184. Return: AX >= 0: event handle
  2185.     AX < 0: two's complement of error code (see #2306)
  2186. Note:    files needed for an event must be kept until task is complete or error
  2187. SeeAlso: AX=CB0Bh,AX=CB15h
  2188.  
  2189. (Table 2306)
  2190. Values for CAS error code:
  2191.   (AH = class, AL = subcode, value passed back is 2's complement)
  2192.   Class 00h    --- FAX warnings
  2193.     Subcode 00h    no error
  2194.         02h    bad scanline count
  2195.         03h    page sent with errors, could not retransmit
  2196.         04h    received data lost
  2197.         05h    invalid or missing logo file
  2198.         06h    filename does not match nonstandard format (NSF) header
  2199.         07h    file size does not match NSF header
  2200.   Class 01h    --- DOS warnings (data was sent)
  2201.     Subcode 01h    invalid function
  2202.         05h    access denied
  2203.         06h    invalid handle
  2204.         others    see #1020 at INT 21/AH=59h/BX=0000h
  2205.   Class 02h    --- fatal errors (data not sent)
  2206.     Subcode 00h    multiplex handler failed
  2207.         01h    unknown command
  2208.         02h    bad event handle
  2209.         03h    FIND NEXT attempted before FIND FIRST
  2210.         04h    no more events
  2211.         07h    invalid queue type
  2212.         08h    bad control file
  2213.         09h    communication board busy
  2214.         0Ah    invalid command parameter
  2215.         0Bh    can't uninstall resident code
  2216.         0Ch    file exists
  2217.         80h    unknown task type
  2218.         81h    bad phone number
  2219.         82h    bad .PCX file header
  2220.         83h    unexpected EOF
  2221.         84h    unexpected disconnect
  2222.         85h    too many dialing retries
  2223.         86h    no file specified for send
  2224.         87h    communication board timeout
  2225.         88h    received too many pages (>1023) of data
  2226.         89h    manual connect initiated too long ago
  2227.         8Ah    hardware command set error
  2228.         8Bh    bad NonStandard Format (NSF) header file
  2229.   Class 03h    --- fatal DOS errors
  2230.     Subcode 02h    file not found
  2231.         03h    path not found
  2232.         others    see #1020 at INT 21/AH=59h/BX=0000h
  2233.   Class 04h    --- FAX errors
  2234.     Subcode 01h    remote unit not Group 3 compatible
  2235.         02h    remote unit did not send capabilities
  2236.         03h    other FAX machine incompatible
  2237.         04h    other FAX incapable of file transfers
  2238.         05h    exceeded retrain or FAX resend limit
  2239.         06h    line noise or failure to agree on bit rate
  2240.         07h    remote disconnected after receiving data
  2241.         08h    no response from remote after sending data
  2242.         09h    remote's capabilities incompatible
  2243.         0Ah    no dial tone (v1.2+)
  2244.         0Bh    invalid response from remote unit after sending data
  2245.         0Dh    phone line dead or remote unit disconnected
  2246.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  2247.         11h    invalid command from remote after receiving data
  2248.         15h    tried to receive from incompatible hardware
  2249.         5Ch    received data overflowed input buffer
  2250.         5Dh    remote unexpectedly stopped sending data
  2251.         5Eh    other FAX machine jammed (no data sent)
  2252.         5Fh    remote took too long to send fax scan line
  2253.         63h    can't get through to remote unit
  2254.         64h    user canceled event
  2255.   Class 05h    --- application-specific (v1.2+)
  2256.   ---Intel FAXPOP.EXE
  2257.     Subcode 00h    tried to send while in graphics mode
  2258.         01h    insufficient disk space
  2259.         02h    internal buffer overflow
  2260.   Class 06h    --- CAS implementation-specific (v1.2+)
  2261. --------F-2FCB02-----------------------------
  2262. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  2263.     AX = CB02h
  2264. Return: AX >= 0: event handle of aborted event
  2265.     AX < 0: error code (see #2306)
  2266. Note:    termination could take up to 30 seconds
  2267. SeeAlso: AX=CB08h,AX=CB10h
  2268. --------F-2FCB05-----------------------------
  2269. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  2270.     AX = CB05h
  2271.     CX = status of events to find
  2272.         0000h successful completion
  2273.         0001h waiting to be processed
  2274.         0002h number has been dialed
  2275.         0003h connection established, sending
  2276.         0004h connection established, receiving
  2277.         0005h event aborted
  2278.         FFFFh find any event, regardless of status
  2279.         other negative values, match error code
  2280.     DH = direction
  2281.         00h chronological order, earliest to latest
  2282.         01h reverse chronological order, latest to earliest
  2283.     DL = queue to search
  2284.         00h task queue
  2285.         01h receive queue
  2286.         02h log queue
  2287. Return: AX = 0000h successful
  2288.         BX = event handle for found event
  2289.     AX < 0       error code (see #2306)
  2290. SeeAlso: AX=CB06h,AX=CB07h
  2291. --------F-2FCB06-----------------------------
  2292. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  2293.     AX = CB06h
  2294.     DL = queue to search
  2295.         00h task queue
  2296.         01h receive queue
  2297.         02h log queue
  2298. Return: AX = 0000h successful
  2299.         BX = event handle for found event
  2300.     AX < 0       error code (see #2306)
  2301. Note:    direction of search is same as preceding FIND FIRST call
  2302. SeeAlso: AX=CB05h
  2303. --------F-2FCB07-----------------------------
  2304. INT 2F - Communicating Applications Specification - OPEN FILE
  2305.     AX = CB07h
  2306.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  2307.     CX = receive file number (ignored for task queue and log queue)
  2308.         0000h  open receive control file
  2309.         N       open Nth received data file
  2310.     DL = queue
  2311.         00h task queue
  2312.         01h receive queue control file or received file, as given by CX
  2313.         02h log queue
  2314.         03h group file in task queue (v1.2+)
  2315.         04h group file in log queue (v1.2+)
  2316. Return: AX = 0000h successful
  2317.         BX = DOS file handle for requested file
  2318.     AX < 0       error code (see #2306)
  2319. Note:    the returned file handle has been opened in read-only mode and should
  2320.       be closed with INT 21/AH=3Eh after use
  2321. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  2322. --------F-2FCB08-----------------------------
  2323. INT 2F - Communicating Applications Specification - DELETE FILE
  2324.     AX = CB08h
  2325.     BX = event handle
  2326.     CX = receive file number
  2327.         0000h delete ALL received files and receive control file
  2328.         N      delete Nth received file
  2329.     DL = queue
  2330.         00h delete control file in task queue and corresponding group file
  2331.           if it exists
  2332.         01h delete file in receive queue, as given by CX
  2333.         02h delete control file in log queue (individual deletions not
  2334.           recommended, to maintain integrity of log) and corresponding
  2335.           group file if it exists
  2336. Return: AX = 0000h successful
  2337.     AX < 0       error code (see #2306)
  2338. SeeAlso: AX=CB02h,AX=CB09h
  2339. --------F-2FCB09-----------------------------
  2340. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  2341.     AX = CB09h
  2342.     DL = queue
  2343.         00h delete all control files in task queue, including all group
  2344.           files
  2345.         01h delete all files in receive queue
  2346.         02h delete all control files in log queue, including all group
  2347.           files
  2348. Return: AX = 0000h successful
  2349.     AX < 0       error code (see #2306)
  2350. SeeAlso: AX=CB08h
  2351. --------F-2FCB0A-----------------------------
  2352. INT 2F - Communicating Applications Specification - GET EVENT DATE
  2353.     AX = CB0Ah
  2354.     BX = event handle
  2355.     DL = queue
  2356.         00h task queue
  2357.         01h receive queue
  2358.         02h log queue
  2359. Return: AX = 0000h successful
  2360.         CX = year
  2361.         DH = month
  2362.         DL = day
  2363.     AX < 0       error code (see #2306)
  2364. SeeAlso: AX=CB0Bh,AX=CB0Ch
  2365. --------F-2FCB0B-----------------------------
  2366. INT 2F - Communicating Applications Specification - SET TASK DATE
  2367.     AX = CB0Bh
  2368.     BX = event handle (task event only)
  2369.     CX = year
  2370.     DH = month
  2371.     DL = day
  2372. Return: AX = 0000h successful
  2373.     AX < 0       error code (see #2306)
  2374. Note:    setting a task's date and time to before the current date and time
  2375.       causes it to execute immediately
  2376. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  2377. --------F-2FCB0C-----------------------------
  2378. INT 2F - Communicating Applications Specification - GET EVENT TIME
  2379.     AX = CB0Ch
  2380.     BX = event handle
  2381.     DL = queue
  2382.         00h task queue
  2383.         01h receive queue
  2384.         02h log queue
  2385. Return: AX = 0000h successful
  2386.         CH = hour
  2387.         CL = minute
  2388.         DH = second
  2389.         DL = 00h
  2390.     AX < 0       error code (see #2306)
  2391. SeeAlso: AX=CB0Ah,AX=CB0Dh
  2392. --------F-2FCB0D-----------------------------
  2393. INT 2F - Communicating Applications Specification - SET TASK TIME
  2394.     AX = CB0Dh
  2395.     BX = event handle (task events only)
  2396.     CH = hour
  2397.     CL = minute
  2398.     DH = second
  2399.     DL unused
  2400. Return: AX = 0000h successful
  2401.     AX < 0       error code (see #2306)
  2402. Note:    setting a task's date and time to before the current date and time
  2403.       causes it to execute immediately
  2404. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  2405. --------F-2FCB0E-----------------------------
  2406. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  2407.     AX = CB0Eh
  2408.     DS:DX -> 256-byte buffer for external data block (see #2307)
  2409. Return: AX = 0000h successful
  2410.         DS:DX buffer filled
  2411.     AX < 0       error code (see #2306)
  2412.  
  2413. Format of CAS external data block:
  2414. Offset    Size    Description    (Table 2307)
  2415.  00h    BYTE    CAS major version
  2416.  01h    BYTE    CAS minor version
  2417.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  2418.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  2419.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  2420.  60h 32 BYTEs    ASCIZ default sender name
  2421.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  2422.  95h 107 BYTEs    reserved
  2423. --------F-2FCB0F-----------------------------
  2424. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  2425.     AX = CB0Fh
  2426.     DL = subfunction
  2427.         00h get current autoreceive state
  2428.         01h set autoreceive state
  2429.         DH = number of rings before answer, 00h = never
  2430. Return: AX = 0000h autoreceive disabled
  2431.     AX = N       number of rings before answer
  2432.     AX < 0       error code (see #2306)
  2433. --------F-2FCB10-----------------------------
  2434. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  2435.     AX = CB10h
  2436.     DS:DX -> 512-byte buffer for status area (see #2309)
  2437. Return: AX = 0000h successful
  2438.         BX = event handle of current event or negative error code if
  2439.               no current event
  2440.         buffer filled
  2441.     AX < 0       error code (see #2306)
  2442. SeeAlso: AX=CB02h,AX=CB0Dh
  2443.  
  2444. (Table 2308)
  2445. Values for CAS event type:
  2446.  00h    send
  2447.  01h    receive
  2448.  02h    polled send
  2449.  03h    polled receive
  2450.  04h to 7Fh reserved
  2451.  FFh    serious hardware error
  2452.  
  2453. Format of CAS status area:
  2454. Offset    Size    Description    (Table 2309)
  2455.  00h    BYTE    event type (see #2308)
  2456.  01h    BYTE    transfer type
  2457.         00h 200x200 dpi, FAX mode
  2458.         01h 100x200 dpi, FAX mode
  2459.         02h file transfer mode
  2460.         03h to 7Fh reserved
  2461.  02h    WORD    event status (see #2310)
  2462.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  2463.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  2464.  08h    WORD    number of files to transfer, max 7FFFh
  2465.  0Ah    WORD    offset of file transfer record
  2466.  0Ch 47 BYTEs    ASCIZ phone number to call
  2467.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  2468.  7Bh    BYTE    reserved (00h)
  2469.  7Ch    BYTE    connect time, seconds
  2470.  7Dh    BYTE    connect time, minutes
  2471.  7Eh    BYTE    connect time, hours
  2472.  7Fh    DWORD    total number of pages in all files
  2473.  83h    DWORD    pages already transmitted
  2474.  87h    WORD    number of files already transmitted
  2475.  89h    BYTE    cover page flag
  2476.         00h don't transmit cover page
  2477.         01h transmit cover page
  2478.         02h to 7Fh reserved
  2479.  8Ah    WORD    total number of transmission errors
  2480.  8Ch 78 BYTEs    reserved (zeros)
  2481.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  2482.  EFH 32 BYTEs    ASCIZ destination name
  2483. 10Fh 32 BYTEs    ASCIZ sender name
  2484. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  2485. 17Fh 128 BYTEs    file transfer record for current event (see #2311)
  2486.  
  2487. (Table 2310)
  2488. Values for CAS event status:
  2489.  0000h    completed successfully
  2490.  0001h    waiting
  2491.  0002h    number dialed
  2492.  0003h    connected, sending
  2493.  0004h    connected, receiving
  2494.  0005h    aborted
  2495.  0006h to 007Fh reserved
  2496.  0080h to 7FFFh application-specific events
  2497.  8000h to FFFFh error codes
  2498.  
  2499. Format of CAS file transfer record:
  2500. Offset    Size    Description    (Table 2311)
  2501.  00h    BYTE    file type (ignored unless FAX)
  2502.         00h ASCII
  2503.         01h PCX
  2504.         02h DCX
  2505.         03h to 7Fh reserved
  2506.  01h    BYTE    text size for ASCII FAX file
  2507.         00h = 80 columns by 66 lines (11 inches)
  2508.         01h = 132 columns by 88 lines (11 inches)
  2509.         02h to 7Fh reserved
  2510.  02h    BYTE    status of file
  2511.         00h untouched
  2512.         01h opened
  2513.         02h moved
  2514.         03h deleted
  2515.         04h not yet received
  2516.         05h to 7Fh reserved
  2517.  03h    DWORD    bytes already transmitted
  2518.  07h    DWORD    file size in bytes
  2519.  0Bh    WORD    pages alread transmitted
  2520.  0Dh    WORD    number of pages in file
  2521.  0Fh 80 BYTEs    ASCIZ filename
  2522.  5Fh    BYTE    1/8 inch page length
  2523.         if page length below set to 01h through 7Fh, this value
  2524.           specifies additional 1/8 inch increments to page length
  2525.  60h    BYTE    page length
  2526.         00h = 11 inches
  2527.         01h to 7Fh = page length is this number of inches plus value of
  2528.               1/8 inch field above
  2529.         80h to FEh reserved
  2530.         FFh = ASCII pages ending with formfeed
  2531.  61h 31 BYTEs    reserved (zeros)
  2532. --------F-2FCB11-----------------------------
  2533. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  2534.     AX = CB11h
  2535.     DL = queue to get status of
  2536.         00h task queue
  2537.         01h receive queue
  2538.         02h log queue
  2539.         03h send events (v1.2+)
  2540.         04h receive events (v1.2+)
  2541. Return: AX >= 0     total number of changes made to queue, modulo 32768
  2542.         BX = number of control files currently in queue
  2543.         CX = number of received files (zero for task and log queues)
  2544.     AX < 0    error code (see #2306)
  2545. SeeAlso: AX=CB12h
  2546. --------F-2FCB11DL03-------------------------
  2547. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  2548.     AX = CB11h
  2549.     DL = 03h
  2550. Return: AX = number of successful sends since resident manager started
  2551.     BX = number of unsuccessful sends, including warnings
  2552. SeeAlso: AX=CB11h/DL=04h
  2553. --------F-2FCB11DL04-------------------------
  2554. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  2555.     AX = CB11h
  2556.     DL = 04h
  2557. Return: AX = number of received file events since resident manager started
  2558.     BX = number of received FAX events
  2559. SeeAlso: AX=CB11h/DL=03h
  2560. --------F-2FCB12-----------------------------
  2561. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  2562.     AX = CB12h
  2563.     DS:DX -> 128-byte status buffer (see #2312,#2314)
  2564. Return: AX = 0000h successful
  2565.         DS:DX buffer filled with hardware-dependent status information
  2566.        < 0       error code (see #2306)
  2567. SeeAlso: AX=CB10h,AX=CB11h
  2568.  
  2569. Format of status buffer for Intel Connection CoProcessor:
  2570. Offset    Size    Description    (Table 2312)
  2571.  00h    BYTE    Connection CoProcessor connection status flags (see #2315)
  2572.  01h    BYTE    number of kilobytes of free buffer space
  2573.  02h    BYTE    page buffer status
  2574.         bit 7: Connection CoProcessor has documents to send
  2575.         bits 6-0: number of pages in buffer
  2576.  03h    BYTE    number of retries left for dialing number
  2577.  04h    BYTE    page number to retransmit
  2578.  05h    BYTE    communications status (see #2316)
  2579.  06h    BYTE    baud rate (see #2313)
  2580.  07h  3 BYTEs    reserved
  2581.  0Ah    BYTE    Connection CoProcessor hardware status (see #2317)
  2582.  0Bh    BYTE    Connection CoProcessor switch states (see #2318)
  2583.  0Ch    BYTE    communications flags (see #2319)
  2584.  0Dh    BYTE    reserved
  2585.  0Eh    WORD    error count (only valid while busy, reset when idle)
  2586.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  2587.  14h    BYTE    'A' if Connection CoProcessor board present
  2588.  15h  9 BYTEs    reserved
  2589.  1Eh 21 BYTEs    ASCIZ CCITT identification
  2590.  33h 77 BYTEs    reserved
  2591. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  2592.       by examining the byte at offset 14h
  2593.  
  2594. Bitfields for Connection CoProcessor baud rate:
  2595. Bit(s)    Description    (Table 2313)
  2596.  7    reserved
  2597.  6-4    baud rate
  2598.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  2599.     100 = 2400 baud (V.27 ter)
  2600.     101 = 4800 baud (V.27 ter)
  2601.     110 = 7200 baud (V.29)
  2602.     111 = 9600 baud (V.29)
  2603.  3-0    reserved, should be 0110
  2604.  
  2605. Format of status buffer for Intel SatisFAXtion board:
  2606. Offset    Size    Description    (Table 2314)
  2607.  00h    BYTE    SatisFAXtion connection status flags (see #2320)
  2608.  01h    BYTE    SatisFAXtion board state (see #2321)
  2609.  02h    BYTE    number of KB free in buffer
  2610.  03h    BYTE    number of pages or files in buffer
  2611.  04h    BYTE    number of redials remaining on current number
  2612.  05h    BYTE    FAX page number to retransmit
  2613.  06h    BYTE    current page/file in block transfer
  2614.  07h    BYTE    number of rings received (only if auto-answer enabled)
  2615.  08h    WORD    error count
  2616.  0Ah    DWORD    length of file being transferred
  2617.  0Eh  6 BYTEs    reserved
  2618.  14h    BYTE    'B' if SatisFAXtion board present
  2619.  15h 13 BYTEs    ASCIZ transfer agent name
  2620.  22h  5 BYTEs    ASCIZ transfer agent version number
  2621.  27h 13 BYTEs    ASCIZ resident loader name
  2622.  34h  5 BYTEs    ASCIZ resident loader version number
  2623.  39h 21 BYTEs    ASCIZ remote CSID
  2624.  4Eh 13 BYTEs    ASCIZ resident manager name
  2625.  5Bh  5 BYTEs    ASCIZ resident manager version number
  2626.  60h 32 BYTEs    reserved
  2627. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  2628.       by examining the byte at offset 14h
  2629.  
  2630. Bitfields for Connection CoProcessor connection status flags:
  2631. Bit(s)    Description    (Table 2315)
  2632.  7    hardware busy sending or receiving
  2633.  6    last page of data
  2634.  5    no data on current page
  2635.  4    retransmit request for current page being transmitted
  2636.  3    NSF (nonstandard file) mode active
  2637.  2-0    reserved
  2638.  
  2639. Bitfields for communications status:
  2640. Bit(s)    Description    (Table 2316)
  2641.  7    originating call
  2642.  6    FAX message to be sent
  2643.  5    on line
  2644.  4    ring detected and receive enabled
  2645.  3    buffer dumped on receive
  2646.  2-0    hardware sequence state
  2647.     000 idle
  2648.     001 dial
  2649.     010 answer
  2650.     011 transmit
  2651.     100 receive
  2652.     101 pre-message
  2653.     110 post-message
  2654.     111 disconnect
  2655.  
  2656. Bitfields for Connection CoProcessor hardware status:
  2657. Bit(s)    Description    (Table 2317)
  2658.  7    modem option installed
  2659.  6    Connection CoProcessor has control of DAA (not latched)
  2660.  5    on line (not latched)
  2661.  4    ring detected (not latched)
  2662.  3    data in command buffer (not latched)
  2663.  2    set if using DMA channel 1, clear if using DMA channel 3
  2664.  1    line length compensation 1 set (not latched)
  2665.  0    line length compensation 0 set (not latched)
  2666.  
  2667. Bitfields for Connection CoProcessor switch states:
  2668. Bit(s)    Description    (Table 2318)
  2669.  7    reserved
  2670.  6    unused
  2671.  5    spare switch open
  2672.  4    FAX ADR1 switch open
  2673.  3    FAX ADR0 switch open
  2674.  2    alternate interrupt switch open
  2675.  1    COM SEL 1 switch open
  2676.  0    COM SEL 0 switch open
  2677. Note:    valid combinations of 0-2 are
  2678.     000  COM2 IRQ3 IObase 2F8h
  2679.     001  COM1 IRQ4 IObase 3F8h
  2680.     010  COM4 IRQ3 IObase 2E8h
  2681.     011  COM3 IRQ4 IObase 3E8h
  2682.     110  COM4 IRQ2 IObase 2E8h
  2683.     111  COM3 IRQ5 IObase 3E8h
  2684.  
  2685. Bitfields for communications flags:
  2686. Bit(s)    Description    (Table 2319)
  2687.  7    reserved
  2688.  6    auxiliary relay forced ON
  2689.  5    modem select relay forced ON
  2690.  4    offhook relay forced ON
  2691.  3    9600 bps enabled
  2692.  2    7200 bps enabled
  2693.  1    4800 bps enabled
  2694.  0    2400 bps enabled
  2695.  
  2696. Bitfields for SatisFAXtion connection status flags:
  2697. Bit(s)    Description    (Table 2320)
  2698.  7    busy in T.30 CCITT fax protocol
  2699.  6    data on current page/file (only used for block xfers)
  2700.  5    retransmission of last page requested
  2701.  4    in file transfer mode
  2702.  3    data in buffer
  2703.  2    data buffer dumped on receive
  2704.  1    200x100 dpi resolution instead of 200x200 dpi
  2705.  0    data modem in use, FAX image modem not available
  2706.  
  2707. Bitfields for SatisFAXtion board state:
  2708. Bit(s)    Description    (Table 2321)
  2709.  7    reserved
  2710.  6    handset jack active, data and FAX modems not available
  2711.  5-3    current rate
  2712.     000  300 bps (V.21 HDLC)
  2713.     100 2400 bps (V.27 ter)
  2714.     101 4800 bps (V.27 ter)
  2715.     110 7200 bps (V.29)
  2716.     111 9600 bps (V.29)
  2717.  2-0    T.30 CCITT protocol state
  2718.     000 idle
  2719.     001 dialing
  2720.     010 answering
  2721.     011 transmitting
  2722.     100 receiving
  2723.     101 pre-message
  2724.     110 post-message
  2725.     111 disconnect
  2726. --------F-2FCB13DL00-------------------------
  2727. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  2728.     AX = CB13h
  2729.     DL = 00h
  2730. Return: AX = 0040h in progress
  2731.        >= 0       passed
  2732.        < 0       hardware-dependent failure code (see #2322,#2323)
  2733. SeeAlso: AX=CB13h/DL=01h
  2734.  
  2735. Bitfields for Intel Connection CoProcessor failure codes:
  2736. Bit(s)    Description    (Table 2322)
  2737.  3    9600 bps FAX modem module failed
  2738.  2    SDLC chip failed
  2739.  1    RAM failed
  2740.  0    ROM checksum failed
  2741.  
  2742. Bitfields for Intel SatisFAXtion failure codes:
  2743. Bit(s)    Description    (Table 2323)
  2744.  1    2400 bps data modem failed
  2745.  0    9600 bps FAX modem failed
  2746. --------F-2FCB13DL01-------------------------
  2747. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  2748.     AX = CB13h
  2749.     DL = 01h
  2750. Return: AX = 0000h successfully started
  2751.     AX < 0       error code (see #2306)
  2752. SeeAlso: AX=CB13h/DL=00h
  2753. --------F-2FCB14-----------------------------
  2754. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  2755.     AX = CB14h
  2756.     BX = event handle
  2757.     CX = receive file number
  2758.         0001h first received file
  2759.         N      Nth received file
  2760.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  2761. Return: AX = 0000h successful
  2762.     AX < 0       error code (see #2306)
  2763. --------F-2FCB15-----------------------------
  2764. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  2765.     AX = CB15h
  2766.     DS:DX -> variable-length data area (see #2324)
  2767. Return: AX >= 0 event handle
  2768.     AX < 0    error code (see #2306)
  2769. SeeAlso: AX=CB01h
  2770.  
  2771. Format of CAS file submission data area:
  2772. Offset    Size    Description    (Table 2324)
  2773.  00h    BYTE    transfer type
  2774.         00h = 200x200 dpi, fax mode
  2775.         01h = 100x200 dpi, fax mode
  2776.         02h = file transfer mode
  2777.         03h to 7Fh reserved
  2778.  01h    BYTE    text size
  2779.         00h = 80 columns
  2780.         01h = 132 columns
  2781.         02h to 7Fh reserved
  2782.  02h    WORD    time to send (DOS packed time, see #1005 at INT 21/AX=5700h)
  2783.  04h    WORD    date to send (DOS packed date, see #1006 at INT 21/AX=5700h)
  2784.  06h 32 BYTEs    ASCIZ destination name
  2785.  26h 80 BYTEs    ASCIZ name of file to send
  2786.  76h 47 BYTEs    ASCIZ phone number to dial
  2787.  A5h 64 BYTEs    ASCIZ application-specific tag string
  2788.  E5h    BYTE    reserved (00h)
  2789.  E6h    BYTE    cover page
  2790.         00h don't send cover page
  2791.         01h send cover page
  2792.         02h to 7Fh reserved
  2793.  E7h 23 BYTEs    reserved (zeros)
  2794.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  2795.         set to 01h)
  2796. --------F-2FCB16BX1234-----------------------
  2797. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  2798.     AX = CB16h
  2799.     BX = 1234h
  2800.     CX = 5678h
  2801.     DX = 9ABCh
  2802. Return: AX = 0000h successful
  2803.     AX < 0       error code
  2804. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  2805. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  2806. Index:    uninstall;CAS Manager
  2807. --------F-2FCB17-----------------------------
  2808. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  2809.     AX = CB17h
  2810.     BX = event handle
  2811.     CL = cover page status
  2812.         00h not read
  2813.         01h read by user
  2814. Return: AX = 0000h successful
  2815.     AX < 0       error code
  2816. --------F-2FCB80-----------------------------
  2817. INT 2F - Intel SatisFAXtion CASMGR - ???
  2818.     AX = CB80h
  2819.     ???
  2820. Return: ???
  2821. --------F-2FCB81-----------------------------
  2822. INT 2F - Intel SatisFAXtion CASMGR - ???
  2823.     AX = CB81h
  2824.     ???
  2825. Return: ???
  2826. --------F-2FCB82-----------------------------
  2827. INT 2F - Intel SatisFAXtion CASMGR - ???
  2828.     AX = CB82h
  2829.     ???
  2830. Return: ???
  2831. --------F-2FCBDCBL56-------------------------
  2832. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  2833.     AX = CBDCh
  2834.     BL = 56h
  2835.     BH = line number (starts with 1)
  2836.     CX:DX -> 32-byte status buffer or 80 character string
  2837. Return: AX = number of cards installed, or FFFFh on error
  2838. Program: Comwave manufacturers the Microfax line of fax cards which are a
  2839.       high-performance multi-card FAX solution for OEMs.
  2840. Note:    defaults to AH=CBh but can be changed
  2841. SeeAlso: AX=CBDDh,AX=DA00h
  2842. --------F-2FCBDDBL56-------------------------
  2843. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  2844.     AX = CBDDh
  2845.     BL = 56h
  2846.     BH = ?
  2847.     CX:DX -> command to execute
  2848. Return: AX = status
  2849.         0000h success
  2850.         FFFFh on error
  2851. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  2852. --------c-2FCC--SI5453-----------------------
  2853. INT 2F U - PC-Kwik Programs - API
  2854.     AH = CCh
  2855.     SI = 5453h or 7473h
  2856.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  2857.     DL = program identifier (see #2325)
  2858. Return: SI = 7473h
  2859.     other registers vary by function
  2860. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  2861.       thus supports this call
  2862. SeeAlso: INT 21/AH=2Bh/CX=4358h
  2863.  
  2864. (Table 2325)
  2865. Values for PC-Kwik program identifier:
  2866.  00h    all installed PowerPak programs
  2867.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  2868.  02h    PCKSPL (print spooler)
  2869.  04h    PCKSCRN (screen accelerator)
  2870.  05h    PCKKEY (keyboard enhancer)
  2871.  06h    PCKRAMD (RAM disk)
  2872.  08h    PCKWIK.SYS
  2873.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  2874. --------N-2FCC00-----------------------------
  2875. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  2876.     AX = CC00h
  2877. Return: AX = 7777h
  2878.     BX = ???
  2879.     CX = ???
  2880.     DX = ???
  2881.     ES = data segment of resident portion
  2882. SeeAlso: AX=CC01h,AX=CC06h
  2883. --------N-2FCC01-----------------------------
  2884. INT 2F - Tsoft NFSDRVR - ???
  2885.     AX = CC01h
  2886.     ???
  2887. Return: ???
  2888. SeeAlso: AX=CC00h
  2889. --------N-2FCC02-----------------------------
  2890. INT 2F - Tsoft NFSDRVR - ???
  2891.     AX = CC02h
  2892.     ???
  2893. Return: ???
  2894. SeeAlso: AX=CC00h
  2895. --------N-2FCC03-----------------------------
  2896. INT 2F - Tsoft NFSDRVR - ???
  2897.     AX = CC03h
  2898.     ???
  2899. Return: ???
  2900. SeeAlso: AX=CC00h
  2901. --------N-2FCC04-----------------------------
  2902. INT 2F - Tsoft NFSDRVR - ???
  2903.     AX = CC04h
  2904.     ???
  2905. Return: ???
  2906. SeeAlso: AX=CC00h
  2907. --------N-2FCC05-----------------------------
  2908. INT 2F - Tsoft NFSDRVR - ???
  2909.     AX = CC05h
  2910.     ???
  2911. Return: ???
  2912. SeeAlso: AX=CC00h
  2913. --------N-2FCC06-----------------------------
  2914. INT 2F - Tsoft NFSDRVR - ???
  2915.     AX = CC06h
  2916.     ???
  2917. Return: ???
  2918. SeeAlso: AX=CC00h
  2919. --------P-2FCD00-----------------------------
  2920. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  2921.     AX = CD00h
  2922. Return: AL = state
  2923.         00h not installed, OK to install
  2924.         01h not installed, not OK to install
  2925.         FFh installed
  2926. SeeAlso: AX=CD02h"Image"
  2927. --------P-2FCD00-----------------------------
  2928. INT 2F - LaserPort Interface - INSTALLATION CHECK
  2929.     AX = CD00h
  2930. Return: AL = status
  2931.         FFh installed
  2932. SeeAlso: AX=CD0Fh"LaserPort"
  2933. --------U-2FCD00-----------------------------
  2934. INT 2F - SWELL.EXE - INSTALLATION CHECK
  2935.     AX = CD00h
  2936. Return: AX = 00FFh installed
  2937.         BH = major version
  2938.         BL = minor version
  2939. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a
  2940.       child process with INT 21/AH=4Bh
  2941. --------s-2FCD00BX464F-----------------------
  2942. INT 2F - Forte/Gravis ULTRAMID - INSTALLATION CHECK
  2943.     AX = CD00h
  2944.     BX = 464Fh ('FO')
  2945.     CX = 5254h ('RT')
  2946.     DX = 4520h ('E ')
  2947. Return: AL = FFh if installed
  2948.         BX = 4155h ('AU')
  2949.         CX = 4449h ('DI')
  2950.         DX = 4F20h ('O ')
  2951.         ES:SI -> program ID string
  2952. Program: ULTRAMID is a MIDI driver for the Gravis UltraSound which allows use
  2953.       of AIL drivers with other software
  2954. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  2955. SeeAlso: INT 21/AX=FD12h,AX=CD00h/DX=4957h
  2956. --------s-2FCD00DX4957-----------------------
  2957. INT 2F R - InterWave Game API - INSTALLATION CHECK
  2958.     AX = CD00h
  2959.     DX = 4957h ('IW')
  2960.     SI = 5645h ('VE')
  2961. Return: AL = FFh if installed
  2962.         DX = 4554h ('ET')
  2963.         SI = 454Bh ('EK')
  2964. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  2965. SeeAlso: AX=CD00h/BX=464Fh,AX=CD01h"InterWave",AX=CD21h"InterWave"
  2966. SeeAlso: AX=CD80h"InterWave"
  2967. --------P-2FCD01-----------------------------
  2968. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  2969.     AX = CD01h
  2970.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  2971. Return: AL = status
  2972.         00h successful
  2973.         CX:BX -> internal character device name
  2974.         80h error
  2975. --------U-2FCD01-----------------------------
  2976. INT 2F - SWELL.EXE - SUSPEND ONCE
  2977.     AX = CD01h
  2978. Return: AX = 0000h
  2979. SeeAlso: AX=CD02h"SWELL"
  2980. --------s-2FCD01BX0000-----------------------
  2981. INT 2F R - InterWave Game API - GET NUMBER OF INTERWAVE PROGRAMS / PROGRAM ID
  2982.     AX = CD01h
  2983.     BX = 0000h
  2984. Return: BX = number of programs currently installed on the Game API
  2985. Desc:    get the number of programs supporting the InterWave Game API which are
  2986.       currently installed in memory, which also forms the next program ID
  2987.       number if the caller wishes to go resident on the API
  2988. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  2989. Notes:    the first program to install on the IW Game API must use ID 00h
  2990.     the AMD-recommended implementation is for the handler to increment
  2991.       BX and chain to the previous handler (if any), but this will fail
  2992.       if TSRs are unloaded out-of-order
  2993. SeeAlso: AX=CD00h"InterWave",AX=CD02h"InterWave",AX=CD03h"InterWave"
  2994. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  2995. --------P-2FCD02-----------------------------
  2996. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  2997.     AX = CD02h
  2998. Return: AL = status
  2999.         00h/01h successful
  3000.         BH = major version number (BCD)
  3001.         BL = minor version number (BCD)
  3002.         80h error
  3003. Note:    if return AL = 01h, the IPI supports network redirection
  3004. SeeAlso: AX=CD00h"Image"
  3005. --------U-2FCD02-----------------------------
  3006. INT 2F - SWELL.EXE - SUSPEND
  3007.     AX = CD02h
  3008. Return: AX = 0000h
  3009. SeeAlso: AX=CD03h"SWELL"
  3010. --------s-2FCD02-----------------------------
  3011. INT 2F R - InterWave Game API - GET PROGRAM STATUS AND INFORMATION
  3012.     AX = CD02h
  3013.     BX = program identifier
  3014. Return: CX = program status
  3015.         bit 0: using synthesizer
  3016.         bit 1: using Codec
  3017.         bit 2: supports at least one Game Device (see AX=CD21h,AX=CD22h)
  3018.     BX = supported API version (BCD, BH=major, BL=minor) if CX bit 2 set
  3019.     ES:DI -> ASCIZ identification string
  3020. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  3021. Note:    ordinarily, an application will loop through all valid program
  3022.       identifiers (as returned by AX=CD01h); if any of the installed
  3023.       programs conflicts with the use the caller wishes to make of the
  3024.       InterWave chip, it should be disabled with AX=CD03h first
  3025. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
  3026. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  3027. --------P-2FCD03-----------------------------
  3028. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  3029.     AX = CD03h
  3030.     BX = scan line
  3031.     CX = requested density in dots per inch (300, 600, or 1200)
  3032. Return: AL = status (see also AX=CD04h"Image")
  3033.         00h successful
  3034.         CX = density at which scan line was mapped
  3035.         ES:DI -> start of scan line
  3036.         80h unsuccessful
  3037.         81h scan line out of range
  3038.         82h unsupported scan line density
  3039.         83h out of memory
  3040. SeeAlso: AX=CD04h"Image"
  3041. --------U-2FCD03-----------------------------
  3042. INT 2F - SWELL.EXE - ACTIVATE
  3043.     AX = CD03h
  3044. Return: AX = 0000h
  3045. SeeAlso: AX=CD02h"SWELL"
  3046. --------s-2FCD03-----------------------------
  3047. INT 2F R - InterWave Game API - SUSPEND PROGRAM
  3048.     AX = CD03h
  3049.     BX = installed program identifier
  3050.     CX = InterWave section to be released
  3051.         0000h all
  3052.         0001h synthesizer
  3053.         0002h Codec
  3054. Return: AL = status
  3055.         00h successful
  3056.         BX = base port
  3057.         CL = IRQ
  3058.         CH = DMA channel (Codec only)
  3059.         else failed
  3060. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  3061. SeeAlso: AX=CD04h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  3062. --------P-2FCD04-----------------------------
  3063. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  3064.     AX = CD04h
  3065.     CX:BX -> structure (see #2327)
  3066. Return: AL = status (see #2326)
  3067. SeeAlso: AX=CD03h"Image"
  3068.  
  3069. (Table 2326)
  3070. Values for IPI function status:
  3071.  00h    successful
  3072.  80h    unsuccessful
  3073.  81h    scan line out of range
  3074.  82h    unsupported scan line density
  3075.  83h    out of memory
  3076.  84h    unrecognized source
  3077.  85h    initialization error
  3078.  
  3079. Format of structure:
  3080. Offset    Size    Description    (Table 2327)
  3081.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3082.  02h    DWORD    pointer to image data
  3083.  06h    WORD    scan line on which to place
  3084.  08h    WORD    bit offset from start of scan line at which to place
  3085.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  3086.  0Ch    WORD    width in bits of data
  3087.  0Eh    WORD    source logical page number
  3088.  10h    WORD    source handle (only if source in expanded memory)
  3089.  12h    WORD    source offset (only if source in expanded memory)
  3090. --------U-2FCD04-----------------------------
  3091. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  3092.     AX = CD04h
  3093. Return: AX = 0000h
  3094. SeeAlso: AX=CD05h"SWELL"
  3095. --------s-2FCD04-----------------------------
  3096. INT 2F R - InterWave Game API - WAKE PROGRAM
  3097.     AX = CD04h
  3098.     BX = installed program identifier
  3099. Return: AL = status
  3100.         00h successful
  3101.         else failed
  3102. Note:    this function should only be called after the program has been
  3103.       suspended with AX=CD03h
  3104. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
  3105. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  3106. SeeAlso: INT 7E/AL=84h"IWSBSDRV"
  3107. --------P-2FCD05-----------------------------
  3108. INT 2F - Intel Image Processing Interface - PRINT PAGE
  3109.     AX = CD05h
  3110. Return: AL = status (00h,80h) (see #2326)
  3111. Note:    page image is retained, so multiple calls will print multiple copies of
  3112.       the page
  3113. SeeAlso: AX=CD06h"Image"
  3114. --------U-2FCD05-----------------------------
  3115. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  3116.     AX = CD05h
  3117. Return: AX = 0000h
  3118. SeeAlso: AX=CD04h"SWELL"
  3119. --------s-2FCD05-----------------------------
  3120. INT 2F R - InterWave Game API - UNINSTALL RESIDENT DEVICE DRIVER
  3121.     AX = CD05h
  3122.     BX = installed program identifier
  3123. Return: AL = status
  3124.         00h successful
  3125.         else failed
  3126. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  3127. SeeAlso: AX=CD03h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  3128. --------P-2FCD06-----------------------------
  3129. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  3130.     AX = CD06h
  3131. Return: AL = status (00h,80h) (see #2326)
  3132. Note:    palette is reset to default
  3133. SeeAlso: AX=CD09h"Image"
  3134. --------U-2FCD06-----------------------------
  3135. INT 2F - SWELL.EXE - UNINSTALL
  3136.     AX = CD06h
  3137. Return: AX = status
  3138.         0000h uninstalled
  3139.         8002h programs still swapped, not uninstalled
  3140. --------P-2FCD07-----------------------------
  3141. INT 2F - Intel Image Processing Interface - reserved
  3142.     AX = CD07h
  3143. SeeAlso: AX=CD00h"Image"
  3144. --------U-2FCD07-----------------------------
  3145. INT 2F - SWELL.EXE - GET INFO
  3146.     AX = CD07h
  3147.     ES:BX -> 32-byte buffer for info (see #2328)
  3148. Return: AX = status
  3149.         0000h successful
  3150.         ES:BX buffer filled
  3151.         8001h buffer wrong size
  3152.  
  3153. Format of SWELL.EXE info buffer:
  3154. Offset    Size    Description    (Table 2328)
  3155.  00h    WORD    20h  (total size of buffer)
  3156.  02h    BYTE    suspend-once mode active if nonzero
  3157.  03h    BYTE    00h active, 01h suspended
  3158.  04h    BYTE    00h quiet, 01h verbose
  3159.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  3160.  06h 26 BYTEs    unused???
  3161. --------P-2FCD08-----------------------------
  3162. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  3163.     AX = CD08h
  3164.     CX:BX -> structure (see #2329)
  3165. Return: AL = status (00h,80h-85h) (see #2326)
  3166. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  3167.  
  3168. Format of IPI screen image structure:
  3169. Offset    Size    Description    (Table 2329)
  3170.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  3171.  02h    DWORD    pointer to image data
  3172.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  3173.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  3174.  0Ah    WORD    left cropping (currently must be zero)
  3175.  0Ch    WORD    top cropping (currently must be zero)
  3176.  0Eh    WORD    width (currently must be 8000h)
  3177.  10h    WORD    height (currently must be 8000h)
  3178.  12h    WORD    horizontal size of image in 1200 dpi units
  3179.  14h    WORD    vertical size of image in 1200 dpi units
  3180.  16h    WORD    aspect ratio (currently reserved)
  3181.  18h    WORD    initialization flag (if 01h, initialization is performed)
  3182.  1Ah    WORD    pixels per line of source data
  3183.  1Ch    WORD    number of scan lines in source data
  3184.  1Eh    WORD    number of scan lines in packet
  3185.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  3186.  22h    WORD    pixels per byte (1,2,4, or 8)
  3187.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  3188.  26h    WORD    source page number (if in expanded memory)
  3189.  28h    WORD    source handle (if in expanded memory)
  3190.  2Ah    WORD    source offset (if in expanded memory)
  3191. --------U-2FCD08-----------------------------
  3192. INT 2F - SWELL.EXE - UNUSED
  3193.     AX = CD08h
  3194. Return: AX = FFFFh (error)
  3195. --------P-2FCD09-----------------------------
  3196. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  3197.     AX = CD09h
  3198.     CX:BX -> structure (see #2330)
  3199. Return: AL = status (00h,80h) (see #2326)
  3200. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  3201.  
  3202. Format of IPI load screen structure:
  3203. Offset    Size    Description    (Table 2330)
  3204.  00h    BYTE    style
  3205.         44h ('D') diamond style
  3206.         4Ch ('L') line style
  3207.  01h    BYTE    reserved (00h)
  3208.  02h    WORD    frequency in lines per inch [sic]
  3209.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  3210.  04h    WORD    screen angle in degrees (-360 to 360)
  3211.         currently coerced to nearest of -45, 0, 45, or 90
  3212. --------U-2FCD09-----------------------------
  3213. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  3214.     AX = CD09h
  3215. Return: AX = 0000h
  3216. SeeAlso: AX=CD0Ah"SWELL"
  3217. --------P-2FCD0A-----------------------------
  3218. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  3219.     AX = CD0Ah
  3220.     CX:BX -> palette structure (see #2331)
  3221. Return: AL = status (00h,80h) (see #2326)
  3222. SeeAlso: AX=CD09h"Image Processing"
  3223.  
  3224. Format of IPI palette structure:
  3225. Offset    Size    Description    (Table 2331)
  3226.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  3227.  01h    2**N    palette translation values, one per possible pixel value
  3228. --------U-2FCD0A-----------------------------
  3229. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  3230.     AX = CD0Ah
  3231. Return: AX = 0000h
  3232. SeeAlso: AX=CD09h"SWELL"
  3233. --------P-2FCD0F-----------------------------
  3234. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  3235.     AX = CD0Fh
  3236.     BL = function
  3237.         01h enable
  3238.         02h disable
  3239.         03h ???
  3240. Return: AL = status
  3241.         00h success
  3242. SeeAlso: AX=CD00h"LaserPort"
  3243. --------s-2FCD21-----------------------------
  3244. INT 2F R - InterWave Game API - OPEN GAME DEVICE
  3245.     AX = CD21h
  3246.     BX = installed program identifier
  3247.     ES:DI -> ASCIZ device name
  3248.         "MIDISIMPLE"
  3249.         "MIDICOMPLEX"
  3250.         "DIRECTCODEC"
  3251. Return: AL = status
  3252.         00h successful
  3253.         DX = device handle
  3254.         ---MIDISIMPLE and MIDICOMPLEX---
  3255.         BX = real-mode interrupt number (see #3323,#3324)
  3256.         ---DIRECTCODEC---
  3257.         BX = base port
  3258.         CL = IRQ
  3259.         CH = DMA channel (04h = no DMA)
  3260.         SI = size of FIFO in bytes (0000h = use DMA)
  3261.         nonzero failed (not supported or already in use)
  3262.     AH may be destroyed
  3263. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  3264. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  3265. SeeAlso: AX=CD05h"InterWave",AX=CD22h"InterWave",AX=CD80h"InterWave"
  3266.  
  3267. (Table 3323)
  3268. Call MIDISIMPLE with:
  3269.     EAX = function number
  3270.         0001h MIDI byte out
  3271.         BL = MIDI byte to send
  3272.         0002h MIDI string out
  3273.         ECX = length of MIDI string in bytes
  3274.         ES:EDI -> MIDI string to send (should not include timing info)
  3275.     DX = device handle
  3276.     INT xxh (as returned by AX=CD21h)
  3277. Return: EAX = status
  3278.         00000000h if successful
  3279.         FFFFFFFFh on error (bad handle)
  3280. SeeAlso: #3324,INT 7E/AX=0001h"IWSBSDRV",INT 7E/AX=0002h"IWSBSDRV"
  3281.  
  3282. (Table 3324)
  3283. Call MIDICOMPLEX with:
  3284.     EAX = function number
  3285.         ??? (specification is still in development)
  3286.     DX = device handle
  3287.     INT xxh (as returned by AX=CD21h)
  3288. Return: EAX = status
  3289.         00000000h if successful
  3290.         FFFFFFFFh on error (bad handle)
  3291. SeeAlso: #3323
  3292. --------s-2FCD22-----------------------------
  3293. INT 2F R - InterWave Game API - CLOSE GAME DEVICE
  3294.     AX = CD22h
  3295.     BX = installed program identifier
  3296.     DX = device handle (from AX=CD21h)
  3297. Return: AL = status
  3298.         00h successful
  3299.         FFh inavlid handle or device is not open
  3300. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  3301. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  3302. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
  3303. --------s-2FCD80-----------------------------
  3304. INT 2F RC - InterWave Game API - MIXER SETTINGS CHANGED BROADCAST
  3305.     AX = CD80h
  3306. Return: nothing
  3307. Desc:    called by an application controlling the InterWave chip's mixer
  3308.       whenever the mixer's settings are changed
  3309. Range:    AH=CDh-ECh, selected by scanning for an available multiplex number
  3310. Note:    when an application intercepts this function call, it must read the
  3311.       new mixer settings from the InterWave chip
  3312. SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
  3313. SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD22h"InterWave"
  3314. --------K-2FCF00-----------------------------
  3315. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  3316.     AX = CF00h
  3317. Return: AL = FFh if installed
  3318. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  3319. Note:    values in AL other than 00h cause an immediate return without modifying
  3320.       any registers
  3321. --------G-2FD000-----------------------------
  3322. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  3323.     AX = D000h
  3324. Return: CF set on error
  3325.         all other registers must be unchanged)
  3326.     CF clear if successful
  3327.         AL = FFh
  3328.         AH = driver semaphor
  3329.         00h driver is not active
  3330.         01h driver is active
  3331.         BX = CS of the driver
  3332.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  3333.         DL = buffer semaphor
  3334.         00h driver is not pending
  3335.         01h driver is pending between functions 02h and 03h
  3336.         DH = show semaphor
  3337.         00h driver is not pending
  3338.         01h driver is pending between functions 04h and 05h
  3339. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3340.       Schemmer, including a memory monitor, an interpreter and a
  3341.       disassembler
  3342. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  3343. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  3344.       FFh; the default is D0h for the display driver and D1h for the
  3345.       command driver (call INT 60/AH=00h"MDEBUG" for the actual multiplex
  3346.       numbers used)
  3347.     this function MUST be reentrant, as MDEBUG calls it after every popup
  3348.       before any other actions.  The handler should not change any
  3349.       registers if the display is in an unsupported mode or in a mode
  3350.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  3351.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  3352.       not call any of the other functions for this popup session.
  3353.     MDEBUG will not call the other functions if the returned version is
  3354.       less than the actual version of MDEBUG.
  3355.     if the driver is reentrant, DL and DH should be 00h
  3356. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  3357. --------M-2FD000-----------------------------
  3358. INT 2F - ZWmous - INSTALLATION CHECK
  3359.     AX = D000h
  3360. Return: AX = 5A57h ("ZW") if installed
  3361.         BX = segment of resident code
  3362. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  3363.       with many non-mouse applications by entering the letter under the
  3364.       mouse cursor on button presses
  3365. SeeAlso: INT 33/AX=0003h
  3366. --------N-2FD000-----------------------------
  3367. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  3368.     AX = D000h
  3369. Return: AL = FFh if CD/Networker TSR is loaded
  3370.     BX = 4D44h ("MD") signature
  3371.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  3372.     DX = bitmap identifying all loaded CD/Networker TSRs.
  3373. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  3374.       resident redirector TSR and a transient program that controls the
  3375.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  3376.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  3377. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  3378. --------G-2FD001-----------------------------
  3379. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  3380.     AX = D001h
  3381. Return: CF set on error
  3382.     AL = driver semaphor
  3383.     AH = buffer semaphor
  3384. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  3385. Notes:    MDEBUG calls this function after every successful call of the function
  3386.       00h. The function should reset all internal data and the status of
  3387.       the driver. If this function returns an error, MDEBUG will not call
  3388.       the other functions in this popup session.
  3389.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3390.       FFh; the default is D0h for the display driver and D1h for the
  3391.       command driver
  3392. SeeAlso: AX=D000h
  3393. --------G-2FD002-----------------------------
  3394. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  3395.     AX = D002h
  3396. Return: CF set on error
  3397.     CF clear if successful
  3398.         display memory saved and display switched to one of the text modes
  3399.           02h, 03h or 07h.
  3400. Note:    MDEBUG calls this function only once every popup session before
  3401.       displaying its windows.
  3402. SeeAlso: AX=D000h,AX=D003h
  3403. --------N-2FD002BX4D44-----------------------
  3404. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  3405.     AX = D002h
  3406.     BX = 4D44h
  3407.     DX = bitmap identifying one loaded CD/Networker TSR
  3408. Return: ES:DI -> data area owned by TSR
  3409. Note:    the format of the data area changes with each minor revision, so it
  3410.       cannot be counted on
  3411. SeeAlso: AX=D000h"Lotus"
  3412. --------G-2FD003-----------------------------
  3413. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  3414.     AX = D003h
  3415. Return: CF set on error
  3416.     CF clear if successful
  3417.         display restored to the mode it was in before calling AX=D002h and
  3418.           the display memory is restored
  3419. Note:    MDEBUG calls this function only once every popup session just before
  3420.      it exits to normal DOS.
  3421. SeeAlso: AX=D000h,AX=D002h
  3422. --------G-2FD004-----------------------------
  3423. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  3424.     AX = D004h
  3425. Return: CF set on error
  3426.     CF clear if successful
  3427.         display switched to mode it was in before calling AX=D002h and the
  3428.           display memory is restored
  3429. Note:    This function needn't save the display memory before changing it.
  3430. SeeAlso: AX=D000h,AX=D005h
  3431. --------G-2FD005-----------------------------
  3432. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  3433.     AX = D005h
  3434. Return: CF set on error
  3435.     CF clear if successful
  3436.         display restored to mode it was in before calling AX=D004h
  3437. Note:    This function needn't save or change the display memory
  3438. SeeAlso: AX=D000h,AX=D004h
  3439. --------G-2FD0-------------------------------
  3440. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  3441.     AH = D0h
  3442.     AL = 06h-7Fh
  3443. Note:    these functions are reserved for future use
  3444. --------G-2FD0-------------------------------
  3445. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  3446.     AH = D0h
  3447.     AL = 80h-FFh
  3448. Note:    these functions numbers are reserved for user defined features (e.g.
  3449.       communication between the transient und resident parts of the driver)
  3450. --------G-2FD100-----------------------------
  3451. INT 2F C - MDEBUG command driver - GET STATUS
  3452.     AX = D100h
  3453.     BX = version of MDEBUG (BH = major, BL = minor)
  3454.     CX = command driver counter
  3455. ---v1.60+---
  3456.     DS:SI -> MDEBUG identification table (see #2332)
  3457.     ES = segment of display memory used by MDEBUG
  3458.     DI = size of video mode used by MDEBUG
  3459.         (high byte = lines, low byte = columns)
  3460. Return: DL = FFh
  3461.     BX = version number of the driver if it is less than the version in BX,
  3462.           else unchanged
  3463.     CX incremented
  3464. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  3465.       Schemmer, including a memory monitor, an interpreter, and a
  3466.       disassembler
  3467. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  3468. Notes:    called by MDEBUG at start of popup session; if the version number
  3469.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  3470.       not call any of the other functions during this popup session
  3471.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  3472.       FFh; the default is D0h for the display driver and D1h for the
  3473.       command driver (call INT 60/AH=00h"MDEBUG" for the multiplex numbers
  3474.       actually used)
  3475.     this function must end with a far call to the old INT 2F handler after
  3476.       changing the registers
  3477.     this function MUST be reentrant
  3478.     command drivers must also declare the following data at the given
  3479.       offsets in the code segment
  3480.         100h  3 BYTEs    JMP-command in .COM-files
  3481.         103h    BYTE    NOP-command (90h)
  3482.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  3483.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  3484.                 each driver must have a unique name
  3485.     MDEBUG will pass every key and command to the command driver(s) before
  3486.       checking for a valid internal command
  3487. SeeAlso: AX=D000h,AX=D101h
  3488.  
  3489. Format of MDEBUG identification table:
  3490. Offset    Size    Description    (Table 2332)
  3491.  -2    WORD    entry offset
  3492.  00h    WORD    CS of MDEBUG
  3493.  02h    DWORD    old INT 08h vector
  3494.  06h    DWORD    old INT 09h vector
  3495.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  3496.  0Eh    BYTE    length of version string
  3497.  0Fh  N BYTEs    version string
  3498. --------G-2FD101-----------------------------
  3499. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  3500.     AX = D101h
  3501.     CX = command driver counter
  3502. Return: DL = status
  3503.         FFh if successful
  3504.         CX incremented
  3505.         else error: all registers unchanged
  3506. Note:    this function must end with a  far call to the old INT 2F handler after
  3507.       changing the registers
  3508.     this function must be reentrant
  3509. --------G-2FD102-----------------------------
  3510. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  3511.     AX = D102h
  3512.     BL = first character of the interpreter command
  3513.     BH = last character of the interpreter command (or blank)
  3514.     DS:SI -> parameter for the interpreter command as ASCIZ string
  3515.     DS:DI -> MDEBUG data structure (see #2334)
  3516. Return: AL = FFh
  3517.     CF set on error
  3518.         AH = error number (see #2333)
  3519.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  3520.     CF clear if successful
  3521.         AH = return code
  3522.         00h continue processing the command line
  3523.         01h leave MDEBUG popup session
  3524.         02h leave MDEBUG popup session and automatically popup again
  3525.               if the InDOS flag is zero
  3526.         03h not used (same as 00h)
  3527.         04h not used (same as 00h)
  3528.         05h put new command line into the input buffer,
  3529.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3530.         06h process new command line
  3531.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  3532.            else unknown status, but continue processing commmand line
  3533. Note:    this function must end with a far call to the old INT 2F handler (with
  3534.       registers unchanged) if the driver does not support the interpreter
  3535.       command in BX.  Otherwise, the driver must not chain to the old
  3536.       INT 2F.
  3537.  
  3538. (Table 2333)
  3539. Values for MDEBUG error number:
  3540.  01h    syntax error
  3541.  02h    first shell of the command.com is activ
  3542.  03h    Esc pressed
  3543.  04h    break pressed
  3544.  05h    DOS is busy
  3545.  06h    command ended
  3546.  07h    division by zero
  3547.  08h    invalid display driver
  3548.  09h    invalid command driver
  3549.  0Ah    error 8 and 9
  3550.  0Bh    unknown error
  3551.  0Ch    new error
  3552.  else    unknown error
  3553.  
  3554. Format of MDEBUG data structure:
  3555. Offset    Size    Description    (Table 2334)
  3556.  00h    WORD    register SE
  3557.  02h    WORD    register OF
  3558.  04h    WORD    register FS
  3559.  06h    WORD    register FO
  3560.  08h    WORD    register AX
  3561.  0Ah    WORD    register BX
  3562.  0Ch    WORD    register CX
  3563.  0Eh    WORD    register DX
  3564.  10h    WORD    register SI
  3565.  12h    WORD    register DI
  3566.  14h    WORD    register DS
  3567.  16h    WORD    register ES
  3568.  18h    WORD    register BP
  3569.  1Ah    WORD    register SS
  3570.  1Ch    WORD    register SP
  3571.  1Eh    WORD    register FL (flags)
  3572.  20h    WORD    register R0
  3573.  22h    WORD    register R1
  3574.  24h    WORD    register R2
  3575.  26h    WORD    register R3
  3576.  28h    WORD    register R4
  3577.  2Ah    WORD    register R5
  3578.  2Ch    WORD    register R6
  3579.  2Eh    WORD    register R7
  3580.  30h    WORD    register R8
  3581.  32h    WORD    register CS, return-address
  3582.  34h    WORD    register IP, return-address
  3583.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  3584.         saved monitor address (v1.70)
  3585.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  3586.         (original register values at popup entry of MDEBUG)
  3587.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  3588.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  3589.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  3590.  6Ah    DWORD    address of the DOS-invars-table
  3591.  6Eh    DWORD    address of the InDOS flag
  3592.  72h    WORD    offset of the register which is used for the segment of the
  3593.           first monitor window
  3594.  74h    WORD    offset of the register which is used for the offset of the
  3595.           first monitor window
  3596.  76h    WORD    name of the register which is used for the segment of the
  3597.           first monitor segment
  3598.  78h    WORD    name of the register which is used for the offset of the first
  3599.           monitor window
  3600.  7Ah    WORD    pseudo register 1
  3601.  7Ch    WORD    pseudo register 2
  3602. --------G-2FD103-----------------------------
  3603. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  3604.     AX = D103h
  3605.     BX = key code (like result of an interrupt 16h call)
  3606.     CX = cursor position
  3607.         0000h in the ASCII column of the monitor
  3608.         0001h in one of the hex fields of the monitor
  3609.     DS:SI -> MDEBUG data structure (see #2334)
  3610.     ES:DI -> actual byte in the monitor
  3611. Return: AL = FFh
  3612.     AH = return code
  3613.         00h key processed, read next key
  3614.         01h leave MDEBUG popup session
  3615.         02h leave MDEBUG popup session and automatically popup again if DOS
  3616.           is not busy
  3617.         03h signal an error (beep)
  3618.         04h driver has redefined the key, proceed with the new key
  3619.         BX = new key code
  3620.         MDEBUG will not pass the new key to the command driver(s)
  3621.        else treat like code 00h
  3622. Note:    this function must end with a far call to the old INT 2F handler (with
  3623.       registers unchanged) if the driver does not support the key in BX.
  3624.       Otherwise, the driver must not chain to the old INT 2F.
  3625. SeeAlso: AX=D104h
  3626. --------G-2FD104-----------------------------
  3627. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  3628.     AX = D104h
  3629.     DS:SI -> MDEBUG data structure (see #2334)
  3630. Return: AL = FFh
  3631.     AH = return code
  3632.         00h key processed, read next key
  3633.         01h leave MDEBUG popup session
  3634.         02h leave MDEBUG popup session and automactically popup again if
  3635.           DOS is not busy
  3636.         03h signal an error (beep)
  3637.         04h driver has redefined the key, proceed with the new key
  3638.         BX = new key code
  3639.         MDEBUG won't pass the new key to the command driver(s)
  3640.         05h put new command line into the input buffer
  3641.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  3642.         06h process new command line
  3643.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  3644.        else treat like code 00h
  3645. Note:    this function must end with a far call to the old INT 2F handler if the
  3646.       driver does not support the key in BX.  Otherwise, the driver must
  3647.       not chain to the old INT 2F.
  3648. SeeAlso: AX=D103h
  3649. --------G-2FD1-------------------------------
  3650. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  3651.     AH = D1h
  3652.     AL = 05h-0Ah
  3653. Note:    these functions are reserved for future use
  3654. --------G-2FD110-----------------------------
  3655. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  3656.     AX = D110h
  3657. Return: DL = FFh
  3658.     ES:BX -> next program in the chain for INT 2F
  3659.     CX = code segment of this driver
  3660.     DI = offset of driver identification table (see #2335) (v1.60+)
  3661. Notes:    only called by the transient part of the driver
  3662.     must be reentrant and the driver must not chain this function to the
  3663.       old INT 2F
  3664.  
  3665. Format of the MDEBUG driver identification table:
  3666. Offset    Size    Description    (Table 2335)
  3667.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  3668.                          ^- Note: ASCII 129,German U-umlaut
  3669.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  3670.          each driver must have a unique name
  3671. --------G-2FD111-----------------------------
  3672. INT 2F - MDEBUG command driver - START DRIVER
  3673.     AX = D111h
  3674. Return: DL = FFh
  3675. Notes:    only called by the transient part of the driver to inform the resident
  3676.       part that it is installed
  3677.     the function must be reentrant and the driver mustn't chain this
  3678.       function to the old INT 2F
  3679. SeeAlso: AX=D101h,AX=D112h
  3680. --------G-2FD112-----------------------------
  3681. INT 2F - MDEBUG command driver - END DRIVER
  3682.     AX = D112h
  3683. Return: DL = FFh
  3684. Notes:    only called by the transient part of the driver to inform the resident
  3685.       part that it will be released after this function
  3686.     the function must be reentrant and the driver mustn't chain this
  3687.       function to the old INT 2F
  3688. SeeAlso: AX=D101h,AX=D111h
  3689. --------G-2FD1-------------------------------
  3690. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  3691.     AH = D1h
  3692.     AL = 13h-7Fh
  3693. Note:    these functions are reserved for future use
  3694. --------G-2FD1-------------------------------
  3695. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  3696.     AH = D1h
  3697.     AL = 80h-FFh
  3698. Note:    these functions are reserved for user defined features (e.g.
  3699.       communication between the transient und resident parts of the driver)
  3700. --------U-2FD200-----------------------------
  3701. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  3702.     AX = D200h
  3703. Return: AL = FFh if installed??? (documented as AX = return value)
  3704. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  3705.       board by Advantec
  3706. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  3707. --------Q-2FD200BX5144-----------------------
  3708. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  3709.     AX = D200h
  3710.     BX = 5144h ("QD")
  3711.     CX = 4D45h ("ME")
  3712.     DX = 4D30h ("M0")
  3713. Return: AL = FFh installed
  3714.     if BX,CX,DX registers were as specified on entry:
  3715.         BX = 4D45h ("ME")
  3716.         CX = 4D44h ("MD")
  3717.         DX = 5652h ("VR")
  3718. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3719. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  3720.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  3721.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  3722.       Quarterdeck product, it just chains to the previous INT 2F handler
  3723. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  3724. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  3725. --------U-2FD201-----------------------------
  3726. INT 2F - PCL-838.EXE - UNINSTALL
  3727.     AX = D201h
  3728. Return: AX = return value
  3729. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  3730. --------m-2FD201BX4849-----------------------
  3731. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  3732.     AX = D201h
  3733.     BX = 4849h ("HI")
  3734.     CX = 4D45h ("ME")
  3735.     DX = 4D51h ("MQ")
  3736. Return: BX = 4F4Bh ("OK")
  3737.     ES:DI -> HIMEM entry point
  3738. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3739. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  3740. --------m-2FD201BX4849-----------------------
  3741. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  3742.     AX = D201h
  3743.     BX = 4849h ("HI")
  3744.     CX = 5241h ("RA")
  3745.     DX = 4D30h ("M0")
  3746. Return: BX = 4F4Bh ("OK")
  3747.     CX = segment of start of HIRAM chain
  3748.     DX = reserved block owner (QEMM/QRAM code segment)
  3749. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3750. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  3751.       memory chain (see #0969 at INT 21/AH=52h), except that XMS Upper
  3752.       Memory Blocks have the block header program name field set to
  3753.       "UMB"; blocks whose "owner" field is set to the reserved segment
  3754.       returned in DX are locked-out regions such as video memory and ROMs.
  3755. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  3756. --------G-2FD201BX4D41-----------------------
  3757. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  3758.     AX = D201h
  3759.     BX = 4D41h ("MA")
  3760.     CX = 4E49h ("NI")
  3761.     DX = 4645h ("FE")
  3762. Return: BX = 5354h ("ST") if installed
  3763. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3764. SeeAlso: AX=D200h
  3765. --------E-2FD201BX4D45-----------------------
  3766. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  3767.     AX = D201h
  3768.     BX = 4D45h ("ME")
  3769.     CX = 5155h ("QU")
  3770.     DX = 5044h ("PD")
  3771. Return: AL = FFh
  3772.     BX = 4F4Bh ("OK")
  3773. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3774. Note:    this function is called by QEMM 6.03
  3775.     performs a variety of actions before setting return registers
  3776. SeeAlso: AX=D200h
  3777. --------m-2FD201BX5145-----------------------
  3778. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  3779.     AX = D201h
  3780.     BX = 5145h ("QE")
  3781.     CX = 4D4Dh ("MM")
  3782.     DX = 3432h ("42")
  3783. Return: BX = 4F4Bh ("OK")
  3784.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  3785. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3786. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  3787.       has been disabled with the NW3 switch to QEMM386.SYS
  3788. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  3789. --------V-2FD201BX5649-----------------------
  3790. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  3791.     AX = D201h
  3792.     BX = 5649h ("VI")
  3793.     CX = 4452h ("DR")
  3794.     DX = 414Dh ("AM")
  3795. Return: BX = 4F4Bh ("OK")
  3796.     ES:DI -> VIDRAM entry point (see #2336)
  3797. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  3798. SeeAlso: AX=D200h
  3799.  
  3800. (Table 2336)
  3801. Call VIDRAM entry point with:
  3802.     AH = 00h get status
  3803.         Return: AL = VIDRAM state (see #2337)
  3804.             BL = extra RAM status (see #2338)
  3805.             BH = feature flags (see #2339)
  3806.             CL = current monitor (01h = mono, 80h = color)
  3807.             SI = current top of memory (paragraph)
  3808.             DI = segment of start of HiRAM chain
  3809.     AH = 01h setup
  3810.         AL = VIDRAM state (see #2337)
  3811.         BL = extra RAM status (see #2338)
  3812.         BH = feature flags (see #2339)
  3813.         CL = monitor (01h = monochrome, 80h = color)
  3814.         SI = new top of memory (paragraph)
  3815.         DI = segment of start of HiRAM chain
  3816.     AH = 02h get end address of VIDRAM code
  3817.         Return: ES:DI -> VIDRAM partial map context (see #2340,#2341)
  3818. Return: CF set on error
  3819.     CF clear if successful
  3820.  
  3821. (Table 2337)
  3822. Values for VIDRAM state:
  3823.  00h    off
  3824.  01h    no EGA graphics
  3825.  02h    no graphics at all
  3826.  
  3827. (Table 2338)
  3828. Values for VIDRAM extra RAM status:
  3829.  00h    VIDRAM does not use extra RAM
  3830.  01h    VIDRAM uses EMS as extra RAM
  3831.  02h    VIDRAM uses EGA as extra RAM
  3832.  
  3833. Bitfields for VIDRAM feature flags:
  3834. Bit(s)    Description    (Table 2339)
  3835.  0    override enabled
  3836.  1    mapped memory detected in A000h-B000h range
  3837.  2    top of memory not at 640K
  3838.  3    MDA detected
  3839.  4    high RAM exists in video area
  3840.  5    mapped memory detected in video area
  3841.  6-7    reserved???
  3842.  
  3843. Format of VIDRAM partial map context (EMS 3.2):
  3844. Offset    Size    Description    (Table 2340)
  3845.  00h    BYTE    EMS version ID (32h)
  3846.  01h    WORD    EMM handle for this entry
  3847.  03h    BYTE    number of frames
  3848.  04h    BYTE    first page frame
  3849.  05h    WORD    offset from ES to previously saved map
  3850.  
  3851. Format of VIDRAM partial map context (EMS 4.0):
  3852. Offset    Size    Description    (Table 2341)
  3853.  00h    BYTE    EMS version ID (40h)
  3854.  01h    WORD    mappable segment count
  3855.  03h  N WORD    mappable segments
  3856.     WORD    offset to previously saved map???
  3857. --------U-2FD202-----------------------------
  3858. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  3859.     AX = D202h
  3860.     CX:BX -> parameter table
  3861. Return: AX = return value
  3862. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  3863. --------R-2FD300BX4562-----------------------
  3864. INT 2F U - TeleReplica - INSTALLATION CHECK
  3865.     AX = D300h
  3866.     BX = 4562h
  3867.     CX = 2745h
  3868.     DX = serial port I/O base address??? (03F8h for v3.9)
  3869. Return: SI = segment of resident code
  3870.     AX = 251Dh
  3871.     BX = DF21h
  3872.     CX = F321h
  3873.     DX = ???
  3874. --------R-2FD3CB-----------------------------
  3875. INT 2F U - LapLink Quick Connect v6 - API
  3876.     AX = D3CBh
  3877.     CX = function
  3878.         0002h get ???
  3879.         Return: BX:AX -> ???
  3880.             CL = ???
  3881.             CH = ???
  3882.             DX = ???
  3883.             DI = COM1 I/O port???
  3884.             SI = COM2 I/O port???
  3885.         0003h initialization???
  3886.         0004h ???
  3887.         0005h initialization???
  3888.         0006h reset/clear ???
  3889.         Return: AX = 0000h
  3890.             ES:DI -> next byte after ??? cleared by this call
  3891.         0007h initialization???
  3892.         0008h uninstall
  3893.         Return: BX = status
  3894.                 0000h successful
  3895.                 FFFFh incomplete, stub remains in memory
  3896. Return: CX = 534Bh (except function 0002h)
  3897. Index:    uninstall;LapLink Quick Connect
  3898. --------K-2FD3D3BH00-------------------------
  3899. INT 2F - KDRIVE v2.x - INSTALLATION CHECK
  3900.     AX = D3D3h
  3901.     BH = 00h
  3902. Return: BX = 3D3Dh if installed
  3903.     CF clear if installed
  3904.         AX = driver ID??? (returns 0087h for KDRIVE.EXE and 0880h for
  3905.           KDRIVOS2.EXE in one examined version)
  3906. Program: KDRIVE is a shareware extended German keyboard driver by Martin
  3907.       Austermeier, originally based on K3 by Martin Gerdes as published
  3908.       in c't magazine 7/1988
  3909. --------l-2FD44D-----------------------------
  3910. INT 2F - 4DOS.COM v2.1+ - API
  3911.     AX = D44Dh
  3912.     BH = function
  3913.         00h installation check
  3914.         Return: AX = 44DDh
  3915.             BL = major version number
  3916.             BH = minor version number
  3917.             CX = PSP segment address for current invocation
  3918.             DL = 4DOS shell number (0 for the first (root) shell,
  3919.                   updated each time a new copy is loaded)
  3920.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  3921.         Return: nothing
  3922.         (internal, v4.0+) ???
  3923.         Return: AX = 44DDh
  3924.             ES:BX -> data area (see #2342)
  3925.         02h ???
  3926.         DX = ???
  3927.         Note:    v5.52 signals "unrecoverable error" and then terminates
  3928.               with INT 21/AH=4Ch or enters a deliberate infinite
  3929.               loop if ???
  3930.     ---v2.1-3.03 only---
  3931.         03h EXEC program
  3932.         CX:DX -> EXEC record (see #2343)
  3933.         FEh deallocate shell number (passed through to root shell)
  3934.         ???
  3935.         FFh allocate shell number (passed through to root shell)
  3936.     ---v5.52---
  3937.         03h get ???
  3938.         BL = ??? (00h/01h)
  3939.         Return: DX = current value of ???
  3940.         04h set ???
  3941.         BL = ??? (00h/01h)
  3942.         DX = new value for ???
  3943. Note:    a bug in v3.00 will crash the system if unrecognized value in BH
  3944. SeeAlso: AX=D44Eh,AX=D44Fh/BX=0000h,AX=E44Dh,INT 21/AX=4403h"DOS"
  3945. Index:    installation check;4DOS|installation check;NDOS
  3946.  
  3947. Format of 4DOS v4.0 data area:
  3948. Offset    Size    Description    (Table 2342)
  3949.  00h  2 BYTEs    ???
  3950.  06h    WORD    XMS handle for swapping
  3951.     ???
  3952. SeeAlso: #2343
  3953.  
  3954. Format of 4DOS EXEC v2.1-v3.03 record:
  3955. Offset    Size    Description    (Table 2343)
  3956.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  3957.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  3958.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  3959. SeeAlso: #2342
  3960. --------l-2FD44E-----------------------------
  3961. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  3962.     AX = D44Eh
  3963. ---4DOS v3.01+---
  3964.     BX = condition
  3965.         0000h 4DOS is ready to display prompt
  3966.         0001h 4DOS has displayed the prompt, about to accept user input
  3967. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  3968. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  3969. SeeAlso: AX=D44Dh
  3970. --------K-2FD44FBX0000-----------------------
  3971. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  3972.     AX = D44Fh
  3973.     BX = 0000h
  3974. Return: AX = 44DDh if installed
  3975. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  3976.       which emulate the 4DOS and NDOS keystack
  3977. SeeAlso: AX=D44Dh,AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
  3978. --------K-2FD44FBX0001-----------------------
  3979. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  3980.     AX = D44Fh
  3981.     BX = 0001h
  3982.     CX = number of keystrokes (01h-FFh)
  3983.     DS:DX -> keystroke list (one word per keystroke)
  3984. Return: AX = status
  3985.         0000h successful
  3986.         nonzero failed
  3987.     BX,CX,DX destroyed
  3988. Notes:    the keystrokes are the exact values to return from subsequent calls to
  3989.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  3990.         0000h causes subfunctions 01h and 11h to indicate an empty
  3991.               keyboard buffer
  3992.         FFFFh is followed by a word indicating the number of clock
  3993.               ticks to delay before the next faked keystroke
  3994.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  3995.       invocation, and does not range-check CX; it will overwrite memory
  3996.       following the resident portion if CX is greater than 100h.
  3997.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  3998.       which emulate the 4DOS and NDOS keystack
  3999. SeeAlso: AX=D44Dh,AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
  4000. --------G-2FD600-----------------------------
  4001. INT 2F - HEART.COM - INSTALLATION CHECK
  4002.     AX = D600h
  4003. Return: AX = 0303h (two hearts) if installed
  4004.         ES:DI -> buffer (see #2344)
  4005. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4006. Notes:    Once the host program has identified the address of the data area, it
  4007.       can change this to indicate safe/critical, alternate colours, etc.
  4008.     The entries for the color table are in char/attrib form.  Every two
  4009.       entries form a pair which is alternated between 68 times a minute.
  4010.       The first half of the table is for color videos, the second mono.
  4011.       Within each half, the first half is for the safe chars, and the
  4012.       second for the critical chars.
  4013.  
  4014. Format of HEART.COM buffer:
  4015. Offset    Size    Description    (Table 2344)
  4016.  00h  8 WORDs    table of colors/attributes (refer to notes above)
  4017.  10h    BYTE    flags
  4018.         bit 0: program is in critical section, so flash double
  4019.               exclamation mark
  4020.         bit 1: program is in safe code, so flash the heart character
  4021.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4022.         of second line)
  4023. --------T-2FD600-----------------------------
  4024. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4025.     AX = D600h
  4026. Return: AL = D6h if installed
  4027. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4028.       is a programmer's text editor by Greenview Data.
  4029. SeeAlso: AX=D601h,AX=D602h
  4030. --------T-2FD601-----------------------------
  4031. INT 2F U - VEDIT VSWAP - ???
  4032.     AX = D601h
  4033.     BL = subfunction number???
  4034. Return: BL = return code ???
  4035.     ES = resident portion's data??? segment
  4036.     DX = resident portion's code segment
  4037. SeeAlso: AX=D600h"VSWAP"
  4038. --------T-2FD602-----------------------------
  4039. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4040.     AX = D602h
  4041.     other registers set as for INT 21/AX=4B00h
  4042. Return: CF set on error
  4043.         AL = error code
  4044.         82h = failure due to ???
  4045.     CF clear on success
  4046. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4047. --------N-2FD701BX0000-----------------------
  4048. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  4049.     AX = D701h
  4050.     BX = 0000h
  4051. Return: AX = 0000h if installed
  4052.         BX = interrupt number (60h to 66h)
  4053.        nonzero not present
  4054. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  4055.       necessary to examine the four bytes preceding the handlers for
  4056.       INT 60 through INT 66 for the string "BANV"
  4057. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  4058. --------N-2FD702-----------------------------
  4059. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  4060.     AX = D702h
  4061.     BX = function
  4062.     ???
  4063. Return: ???
  4064. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  4065. --------N-2FD703-----------------------------
  4066. INT 2F U - Banyan VINES v4+ - MAIL interface
  4067.     AX = D703h
  4068.     BX = function
  4069.     ???
  4070. Return: ???
  4071. SeeAlso: AX=D702h,AX=D704h
  4072. --------N-2FD704-----------------------------
  4073. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  4074.     AX = D704h
  4075.     BX = function
  4076.     ???
  4077. Return: ???
  4078. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  4079. --------N-2FD800-----------------------------
  4080. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  4081.     AX = D800h
  4082. Return: AL = FFh if installed
  4083.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4084.         BX = data segment of resident copy
  4085.         ES:DI -> private API entry point (see #2345)
  4086.         SI = segment of resident code
  4087. SeeAlso: AX=7A00h,AX=D880h
  4088.  
  4089. (Table 2345)
  4090. Call CLIENT API entry point with:
  4091.     BX = function
  4092.         0000h get ???
  4093.         Return: DX = CLIENT version??? (0101h for v1.1)
  4094.             ES:BX -> ??? data
  4095.         0001h ???
  4096.         0002h ???
  4097.         0003h ???
  4098.         0004h ???
  4099.         0005h ???
  4100.         DL = ???
  4101.         ???
  4102.         Return: ???
  4103.         0006h get module name???
  4104.         ES:DI -> 16-byte buffer
  4105.         Return: CX = ???
  4106.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  4107.         0007h ???
  4108.         DX:CX = ???
  4109.         ???
  4110.         Return: ???
  4111.         0008h ???
  4112.         0009h ???
  4113.         DL = ???
  4114.         ES:DI -> 16-byte buffer for ???
  4115.         Return: CF clear if successful
  4116.                 AX = 0000h
  4117.                 CX = 0000h
  4118.                 SI,DI destroyed
  4119.             CF set on error
  4120.                 AX = error code 4903h
  4121.         000Ah ???
  4122.         AH = subfunction
  4123.             00h get ???
  4124.             01h clear/set ??? flag
  4125.             AL = new state (00h cleared, 01h set)
  4126.             02h set ???
  4127.             DX = new value of ???
  4128.         Return: DX = old value of ???
  4129.         000Bh ???
  4130.         AX = ???
  4131.         ???
  4132.         Return: ???
  4133.         000Ch ???
  4134.         AX = ???
  4135.         ???
  4136.         Return: ???
  4137.         000Dh ???
  4138.         AX = ???
  4139.         ???
  4140.         Return: ???
  4141.         000Eh get original INT 17
  4142.         Return: CF clear
  4143.             ES:BX -> original INT 17
  4144.         000Fh ???
  4145.         0010h ???
  4146.         AX = ???
  4147.         ???
  4148.         Return: ???
  4149.         0011h get ???
  4150.         Return: CF clear
  4151.             DL = ???
  4152.         0012h get ???
  4153.         AL = index of ???
  4154.         ES:DI -> 10-byte buffer for ???
  4155.         Return: CF clear if successful
  4156.                 ES:DI buffer filled
  4157.                 AX,CX destroyed
  4158.             CF set on error
  4159.                 AX = error code (4907h if AL out of range)
  4160.         0013h get ???
  4161.         Return: CF clear
  4162.             DH = ???
  4163.             DL = ???
  4164.         0014h ???
  4165.         DL = ???
  4166.         ???
  4167.         Return: CF clear if successful
  4168.                 ???
  4169.             CF set on error
  4170.                 AX = error code 8056h
  4171.         0015h ???
  4172.         DX = ???
  4173.         Return: ES:DI -> ???
  4174.         other
  4175.         Return: CF set
  4176.             AX = 0001h (invalid function)
  4177. --------N-2FD856-----------------------------
  4178. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  4179.     AX = D856h
  4180. Return: AX = 0001h if supported???
  4181.     BX = ??? (0004h for v1.1)
  4182.     CX = ??? (0F20h for v1.1)
  4183.     DS = segment of resident code
  4184.     ES = data segment of resident copy
  4185. Note:    this function is also supported by Personal NetWare SERVER, bundled
  4186.       with Novell DOS 7
  4187. --------N-2FD880-----------------------------
  4188. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  4189.     AX = D880h
  4190. Return: AL = FFh if installed
  4191.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4192.         BX = data segment of resident copy
  4193.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  4194.         ES:DI -> private API entry point (see #2346)
  4195.         SI = ??? (offset of configuration info?)
  4196. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  4197.       not set; instead, ES:SI points at the API entry point
  4198. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  4199.  
  4200. (Table 2346)
  4201. Call SERVER API entry point with:
  4202.     BX = function
  4203.         0000h ???
  4204.         ???
  4205.         Return: ???
  4206.         Note: closes open files by calling INT 21/AH=3Eh
  4207.         0001h get connection information
  4208.         DX = connection number (0001h-max connections)
  4209.         ES:DI -> 28-byte buffer for connection information
  4210.         Return: CF clear if successful
  4211.                 ES:DI buffer filled
  4212.             CF set on error
  4213.                 AX = FFFFh
  4214.     ---Personal NetWare only---
  4215.         0002h ???
  4216.         0003h ???
  4217.         0004h ???
  4218.         0005h ???
  4219.         0006h ???
  4220.         0007h ???
  4221.         other
  4222.         Return: CF set
  4223.             AX = 0001h (invalid function)
  4224. --------d-2FD8C0-----------------------------
  4225. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  4226.     AX = D8C0h
  4227. Return: AL = FFh if installed
  4228.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  4229.         DH = major version??? (01h for v1.1)
  4230.         DL = minor version??? (01h for v1.1)
  4231.         ES:DI -> private API entry point (see #2347)
  4232. Program: NLCACHE is a disk cache included with NetWare Lite
  4233. SeeAlso: AX=D800h,AX=D880h
  4234.  
  4235. (Table 2347)
  4236. Call NLCACHE/NWCACHE API entry point with:
  4237.     BX = function
  4238.         0000h ???
  4239.         ???
  4240.         Return: CF clear if successful
  4241.                 AX = 0000h
  4242.                 ???
  4243.             CF set on error
  4244.                 AX = error code
  4245.         0001h (NWCACHE only) ???
  4246.         ES:DI -> buffer for ???
  4247.         Return: ???
  4248.         other
  4249.         Return: CF set
  4250.             AX = 0001h (invalid function)
  4251. --------F-2FDA00-----------------------------
  4252. INT 2F - ZyXEL ZFAX v1.x - INSTALLATION CHECK
  4253.     AX = DA00h
  4254. Return: AH = enabled state (00h = enabled, 01h = disabled)
  4255.     AL = 5Ah installed
  4256. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  4257.       fax modems.
  4258. Note:    This function, and the other DAxxh functions, may apply only to version
  4259.       1 of the software; see AX=DB00h for the version 2 installation check
  4260. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  4261. --------F-2FDA01-----------------------------
  4262. INT 2F - ZyXEL ZFAX v1.x - UNINSTALL
  4263.     AX = DA01h
  4264. Return: AL = 00h Success
  4265.          01h Failure
  4266. SeeAlso: AX=DA00h,AX=DB01h
  4267. --------F-2FDA02-----------------------------
  4268. INT 2F - ZyXEL ZFAX v.1x - DISABLE
  4269.     AX = DA02h
  4270. Return: AL = 00h
  4271. SeeAlso: AX=DA03h,AX=DB02h
  4272. --------F-2FDA03-----------------------------
  4273. INT 2F - ZyXEL ZFAX v1.x - ENABLE
  4274.     AX = DA03h
  4275. Return: AL = 00h
  4276. SeeAlso: AX=DA02h,AX=DB03h
  4277. --------G-2FDA55-----------------------------
  4278. INT 2F U - TRAP.COM - INSTALLATION CHECK
  4279.     AX = DA55h
  4280.     DL = interrupt number
  4281.     DH = ???
  4282. Return: if installed
  4283.         AH = interrupt number
  4284.         AL = ???
  4285.         ES:BX -> ???
  4286. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  4287. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  4288.       the interrupt number is part of the installation check
  4289. --------N-2FDAB2-----------------------------
  4290. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  4291.     AX = DAB2h
  4292. Return: AX = 00FFh if installed
  4293.         BX:CX -> MIB table
  4294. Program: BWSNMP is part of the BW-NFS package
  4295. SeeAlso: INT 62/AH=00h"ETHDEV"
  4296. --------F-2FDB00-----------------------------
  4297. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  4298.     AX = DB00h
  4299. Return: AL = 5Bh if installed (v2.x)
  4300.         ES:BX -> configuration table???
  4301.     AX = 00DBh if installed (v3)
  4302.         ES:BX -> ZFAX configuration table (see #2348)
  4303. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  4304.       Fax modems.
  4305. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  4306.  
  4307. Format of ZFAX Configuration Table:
  4308. Offset    Size    Description    (Table 2348)
  4309.  00h    WORD    table version number (0300h for v3.0-v4.01)
  4310.  02h    BYTE    reserved
  4311.  03h 70 BYTEs    ZFAX working path
  4312.  49h 128 BYTEs    path to external editor
  4313.  C9h 128 BYTEs    path to external terminal emulator
  4314. 149h 128 BYTEs    path to Ring Shell
  4315. 1C9h 128 BYTEs    path to DOS Shell
  4316. 249h 128 BYTEs    path to Data Shell
  4317. 2C9h 70 BYTEs    path to Chinese font
  4318. 30Fh    BYTE    printer type (see #2349)
  4319. 310h    BYTE    printer port (00h = LPT1, etc.)
  4320. 311h    BYTE    type of graphics adapter
  4321.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  4322. 312h    BYTE    display type
  4323.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  4324. 313h    BYTE    scan code for ZFAX hotkey (see #0005)
  4325. 314h    BYTE    shift mask for ZFAX hotkey
  4326. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  4327. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  4328. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  4329. 318h    BYTE    normal ring answer type (see #2350)
  4330. 319h    BYTE    Ring 1 answer type (see #2350)
  4331. 31Ah    BYTE    Ring 2 answer type (see #2350)
  4332. 31Bh    BYTE    Ring 3 answer type (see #2350)
  4333. 31Ch    BYTE    COM port for modem
  4334. 31Dh    BYTE    speaker volume (00h-07h)
  4335. 31Eh    BYTE    modem dial timer, seconds
  4336. 31Fh    WORD    user-defined COM port I/O address
  4337. 321h    BYTE    user-defined COM port IRQ number
  4338. 322h 81 BYTEs    dial prefix string
  4339. 373h 79 BYTEs    dial postfix string
  4340. 3C2h    BYTE    ring count until automatic answer
  4341. 3C3h    BYTE    retry count on busy signal
  4342. 3C4h    BYTE    redial delay in seconds
  4343. 3C5h    WORD    system password
  4344. 3C7h    BYTE    reserved
  4345. 3C8h    BYTE    voice file compression format
  4346.         00h CELP at 9600bps
  4347.         01h two-bit ADPCM at 19200bps
  4348.         02h three-bit ADPCM at 28800bps
  4349. 3C9h    BYTE    voice system: DTMF 0 action (see #2351)
  4350. 3CAh    BYTE    voice system: DTMF 1 action
  4351. 3CBh    BYTE    voice system: DTMF 2 action
  4352. 3CCh    BYTE    voice system: DTMF 3 action
  4353. 3CDh    BYTE    voice system: DTMF 4 action
  4354. 3CEh    BYTE    voice system: DTMF 5 action
  4355. 3CFh    BYTE    voice system: DTMF 6 action
  4356. 3D0h    BYTE    voice system: DTMF 7 action
  4357. 3D1h    BYTE    voice system: DTMF 8 action
  4358. 3D2h    BYTE    voice system: DTMF 9 action (see #2351)
  4359. 3D3h    WORD    reserved
  4360. 3D5h 25 BYTEs    local FAX ID to display on page header
  4361. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  4362. 402h    BYTE    FAX page size
  4363.         00h A4 (210x297mm)
  4364.         01h B4 (250x353mm)
  4365.         02h A3 (297x420mm)
  4366. 403h    BYTE    FAX resolution
  4367.         00h normal (3.85 pixels/mm)
  4368.         01h high (7.7 pixels/mm)
  4369. 404h    BYTE    FAX coding scheme
  4370.         00h 1-D, modified Huffman coding
  4371.         01h 2-D, modified READ coding
  4372. 405h    BYTE    left margin for text in millimeters
  4373. 406h    BYTE    vertical insertion for text in mm (0-20)
  4374. 407h    BYTE    horizontal insertion in mm (0-20)
  4375. 408h    BYTE    maximum text lines per page
  4376. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  4377. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  4378. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  4379. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  4380. 40Dh 81 BYTEs    cover page logo filename
  4381. 45Eh 65 BYTEs    cover page sender name
  4382. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  4383. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  4384. 4A1h    BYTE    print capture printer port
  4385. 4A2h    BYTE    print capture timer in seconds
  4386. 4A3h    BYTE    scan code for print capture hotkey (see #0005)
  4387. 4A4h    BYTE    shift mask for print capture hotkey
  4388. 4A5h    BYTE    DataShell type
  4389.         00h internal Zmodem, 01h Data Shell, 02h disable
  4390. 4A6h    BYTE    video I/O type
  4391.         00h auto-detect, 01h use BIOS, 02h direct writes
  4392. 4A7h    BYTE    call transfer digits (0-9)
  4393. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  4394.  
  4395. (Table 2349)
  4396. Values for ZFAX printer type:
  4397.  00h    EPSON FX (9 pins)
  4398.  01h    EPSON LQ (24 pins)
  4399.  02h    HP Laser Jet II, letter size
  4400.  03h    HP Laser Jet II, legal size
  4401.  04h    HP Laser Jet II, A4 size
  4402.  05h    HP Laser Jet III, letter size
  4403.  06h    HP Laser Jet III, legal size
  4404.  07h    HP Laser Jet III, A4 size
  4405. SeeAlso: #2348
  4406.  
  4407. (Table 2350)
  4408. Values for Ring Answer Type:
  4409.  00h    voice system
  4410.  01h    FAX only
  4411.  02h    Data Shell
  4412.  03h    Ring Shell
  4413.  04h    DOS Shell
  4414.  05h    ignore
  4415. SeeAlso: #2348
  4416.  
  4417. (Table 2351)
  4418. Values for DTMF action:
  4419.  00h    none
  4420.  01h    page operator
  4421.  02h    FaxBack
  4422.  03h    announcement
  4423.  04h    call transfer
  4424.  05h    receive FAX
  4425.  06h    receive data
  4426.  07h    voice mailbox
  4427.  08h    DOS Shell Out
  4428.  09h    Data Shell Out
  4429. SeeAlso: #2348
  4430. --------U-2FDB00-----------------------------
  4431. INT 2F U - WINGO.COM - INSTALLATION CHECK
  4432.     AX = DB00h
  4433. Return: AX = FFFFh if installed
  4434.     CX = 5749h ('WI') if installed
  4435.     DX = 4E47h ('NG') if installed
  4436.         ES = segment of resident code
  4437. Program: WINGO.COM is TSR for starting Windows programs from DOS
  4438.       prompt (together with companion Windows program
  4439.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  4440.       PC Magazine
  4441. Range:    AH=DBh to AH=FFh, selected by scanning for a free multiplex number
  4442. SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  4443. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  4444. --------F-2FDB01-----------------------------
  4445. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  4446.     AX = DB01h
  4447. Return: AX = status
  4448.         0000h successful
  4449.         0001h ZFAX is busy
  4450.         0002h another program resident above ZFAX
  4451. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  4452.       not been hooked by other TSRs and releases the TSR's memory
  4453.     ZFAX v2.x crashes the contributor's machine when this function is
  4454.       called
  4455. SeeAlso: AX=DA01h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
  4456. --------U-2FDB01-----------------------------
  4457. INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
  4458.     AX = DB01h
  4459.     CX:DX -> new callback function
  4460. Return: AX = 0000h
  4461.     CX:DX -> end of resident code (stack ???)
  4462. Desc:    the callback function is used for WINGO <-> WINSTART communication
  4463. SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  4464. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  4465. --------F-2FDB02-----------------------------
  4466. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  4467.     AX = DB02h
  4468. Return: AL = 00h
  4469. SeeAlso: AX=DA02h,AX=DB00h"ZFAX",AX=DB01h"ZFAX",AX=DB03h"ZFAX"
  4470. --------U-2FDB02-----------------------------
  4471. INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
  4472.     AX = DB02h
  4473. Return: AX = 0000h
  4474. Desc:    the callback function is used for WINGO <-> WINSTART communication
  4475. SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  4476. SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
  4477. --------F-2FDB03-----------------------------
  4478. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  4479.     AX = DB03h
  4480. Return: AL = 00h
  4481. SeeAlso: AX=DA03h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
  4482. --------U-2FDB03-----------------------------
  4483. INT 2F U - WINGO.COM - SET ??? FLAG
  4484.     AX = DB03h
  4485. Return: AX = 0000h
  4486. SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  4487. --------U-2FDB04-----------------------------
  4488. INT 2F U - WINGO.COM - RESET ??? FLAG
  4489.     AX = DB04h
  4490. Return: AX = 0000h
  4491. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
  4492. --------U-2FDB05-----------------------------
  4493. INT 2F U - WINGO.COM - GET ??? FLAG
  4494.     AX = DB05h
  4495. Return: AX = 0000h
  4496.     DX = unknown flag - 0 or 1
  4497. Program: WINGO.COM is TSR for starting Windows programs from DOS
  4498.       prompt (together with companion Windows program
  4499.       WINSTART.EXE) written by Douglas Boling, contributing editor of
  4500.       PC Magazine
  4501. SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
  4502. --------U-2FDB06-----------------------------
  4503. INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
  4504.     AX = DB06h
  4505. Return: AX = return value of INT 2F/AX=1685h
  4506. Note:    uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
  4507.       call the callback function previously set by AX=DB01h
  4508.     used for WINGO <-> WINSTART communication
  4509. SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
  4510. SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
  4511. --------F-2FDB10-----------------------------
  4512. INT 2F - ZyXEL ZFAX v3+ - EXECUTE ZFAX MAIN MENU
  4513.     AX = DB10h
  4514. SeeAlso: AX=DB00h"ZFAX",AX=DB11h"ZFAX"
  4515. --------F-2FDB11-----------------------------
  4516. INT 2F - ZyXEL ZFAX v3+ - SEND FAX
  4517.     AX = DB11h
  4518.     DS:SI -> filename including path (max 128 characters)
  4519.     DS:BX -> remote FAX number
  4520. Return: AX = status (see #2352)
  4521. SeeAlso: AX=DB00h"ZFAX",AX=DB12h,AX=DB13h,AX=DB14h,AX=DB15h,AX=DB20h,AX=DB21h
  4522.  
  4523. (Table 2352)
  4524. Values for ZFAX status:
  4525.  00h    OK
  4526.  01h    invalid DOS function
  4527.  02h    file not found
  4528.  03h    path not found
  4529.  04h    no file handle available
  4530.  05h    access denied by DOS
  4531.  06h    invalid handle
  4532.  07h    disk full
  4533.  10h    printer error
  4534.  11h    no graphics font
  4535.  12h    no ZFAX font
  4536.  20h    DCD dropped while sending
  4537.  21h    not ZyXEL modem
  4538.  22h    busy
  4539.  23h    no response from COM port
  4540.  24h    no carrier
  4541.  25h    no dial tone
  4542.  26h    no answer
  4543.  27h    no response
  4544.  28h    failed to send FAX
  4545.  30h    user aborted
  4546.  40h    critical error on disk
  4547.  50h    parameter error
  4548. --------F-2FDB12-----------------------------
  4549. INT 2F - ZyXEL ZFAX v3+ - PRINT FAX
  4550.     AX = DB12h
  4551.     DS:SI -> filename, including path (max 128 characters)
  4552. Return: AX = status (see #2352)
  4553. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  4554. --------F-2FDB13-----------------------------
  4555. INT 2F - ZyXEL ZFAX v3+ - CONVERT FAX
  4556.     AX = DB13h
  4557.     DS:SI -> source filename, including path (max 128 characters)
  4558.     DS:BX -> destination filename, including path (max 80 characters)
  4559.     CX = destination file format
  4560.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  4561. Return: AX = status (see #2352)
  4562. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  4563. --------F-2FDB14-----------------------------
  4564. INT 2F - ZyXEL ZFAX v3+ - VIEW FAX
  4565.     AX = DB14h
  4566.     DS:SI -> source filename, including path (max 128 characters)
  4567. Return: AX = status (see #2352)
  4568. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  4569. --------F-2FDB15-----------------------------
  4570. INT 2F - ZyXEL ZFAX v4.01 - SEND FAX WITH LOGO AND SIGNATURE
  4571.     AX = DB15h
  4572.     DS:SI -> source filename, including path (max 128 characters)
  4573.     DS:BX -> remote FAX number
  4574.     DS:CX -> Logo filename
  4575.     DS:DX -> Signature filename
  4576. Return: AX = status (see #2352)
  4577. SeeAlso: AX=DB00h"ZFAX",AX=DB11h
  4578. --------F-2FDB16-----------------------------
  4579. INT 2F - ZyXEL ZFAX v4.01 - QUOTE PREVIOUS STATUS
  4580.     AX = DB16h
  4581. Return: DX:AX -> previous receive state transaction log (see #2353)
  4582.     BX = type (00h incoming FAX, 01h incoming data, 02h incoming voice)
  4583. SeeAlso: AX=DB00h"ZFAX",AX=DB11h,AX=DB17h
  4584.  
  4585. Format of ZFAX transaction log receive state:
  4586. Offset    Size    Description    (Table 2353)
  4587.  00h    WORD    year
  4588.  02h    WORD    date
  4589.  04h    WORD    time
  4590.  06h    WORD    extension number
  4591.  08h    WORD    type: 00h incoming FAX, 01h outgoing FAX, 02h voice message
  4592.  0Ah    WORD    status: 00h normal, 01h remote delete
  4593.  0Ch 125 BYTEs    filename
  4594.  89h 24 BYTEs    caller ID
  4595.  A1h 20 BYTEs    FAX number
  4596.  B5h 20 BYTEs    remote FAX ID
  4597.  C9h    WORD    error code
  4598.  CBh    WORD    connection direction (00h transmit, 01h receive)
  4599.  CDh    BYTE    connection time minutes
  4600.  CEh    BYTE    connection time seconds
  4601.  CFh    BYTE    ???
  4602.  D0h    WORD    connection speed (24, 48, 72, 96, 12, 144)
  4603.  D2h    WORD    connection page size (A4, B4, A3)
  4604.  D4h    WORD    connection coding scheme (1-DN, 1-DH, 2-DN, 2-DH)
  4605.  D6h    WORD    page count
  4606. --------F-2FDB17-----------------------------
  4607. INT 2F - ZyXEL ZFAX v4.01 - BEGIN RECEIVING INCOMING CALL
  4608.     AX = DB17h
  4609. Return: AX = status (0000h successful, 0001h unable to start at this time)
  4610. SeeAlso: AX=DB00h"ZFAX"
  4611. --------F-2FDB18-----------------------------
  4612. INT 2F - ZyXEL ZFAX v4.01 - SCHEDULE CALL
  4613.     AX = DB18h
  4614.     DS:SI -> schedule data (see #2353)
  4615. Return: AX = status (see #2352)
  4616. SeeAlso: AX=DB00h"ZFAX"
  4617. --------F-2FDB20-----------------------------
  4618. INT 2F - ZyXEL ZFAX v3+ - POLL FAX
  4619.     AX = DB20h
  4620.     DS:SI -> remote FAX number
  4621. Return: AX = status (see #2352)
  4622. SeeAlso: AX=DB11h,AX=DB21h
  4623. --------F-2FDB21-----------------------------
  4624. INT 2F - ZyXEL ZFAX v3+ - SEND VOICE
  4625.     AX = DB21h
  4626.     DS:SI -> filename including path (max 128 characters)
  4627.     DS:BX -> remote phone number
  4628. Return: AX = status (see #2352)
  4629. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  4630. --------F-2FDB22-----------------------------
  4631. INT 2F - ZyXEL ZFAX v3+ - CONVERT VOICE FILE
  4632.     AX = DB22h
  4633.     DS:SI -> source filename, including path (max 128 characters)
  4634.     DS:BX -> destination filename, including path (max 80 characters)
  4635.     CX = destination format
  4636.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  4637. Return: AX = status (see #2352)
  4638. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  4639. --------F-2FDB23-----------------------------
  4640. INT 2F - ZyXEL ZFAX v3+ - RECORD VOICE FILE
  4641.     AX = DB23h
  4642.     DS:SI -> destination filename, including path (max 128 characters)
  4643.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  4644.     DX = voice file format
  4645.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  4646. Return: AX = status (see #2352)
  4647. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  4648. --------F-2FDB24-----------------------------
  4649. INT 2F - ZyXEL ZFAX v3+ - PLAY VOICE FILE
  4650.     AX = DB24h
  4651.     DS:SI -> name of voice file, including path (max 128 characters)
  4652.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  4653. Return: AX = status (see #2352)
  4654. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  4655. --------F-2FDB25-----------------------------
  4656. INT 2F - ZyXEL ZFAX v3+ - ANSWER MODEM WITH VOICE SYSTEM
  4657.     AX = DB25h
  4658. Return: AX = status (see #2352)
  4659. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  4660. --------F-2FDB26-----------------------------
  4661. INT 2F - ZyXEL ZFAX v3+ - DIAL PHONE
  4662.     AX = DB26h
  4663.     DS:SI -> remote phone number
  4664. Return: AX = status (see #2352)
  4665. SeeAlso: AX=DB25h
  4666. --------F-2FDB27-----------------------------
  4667. INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  4668.     AX = DB27h
  4669. Return: AX = status (see #2352)
  4670. SeeAlso: AX=DB25h,AX=DB28h
  4671. --------F-2FDB28-----------------------------
  4672. INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  4673.     AX = DB28h
  4674. Return: AX = status (see #2352)
  4675. SeeAlso: AX=DB25h,AX=DB27h,AX=DB41h
  4676. --------F-2FDB40-----------------------------
  4677. INT 2F - ZyXEL ZFAX v3+ - INTERNAL TERMINAL
  4678.     AX = DB40h
  4679. Return: AX = status (see #2352)
  4680. SeeAlso: AX=DB00h
  4681. --------F-2FDB41-----------------------------
  4682. INT 2F - ZyXEL ZFAX v3+ - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  4683.     AX = DB41h
  4684.     DS:SI -> source file name, including path (max 128 characters)
  4685.     DS:BX -> remote data number
  4686. Return: AX = status (see #2352)
  4687. SeeAlso: AX=DB00h,AX=DB28h
  4688. --------K-2FDC00-----------------------------
  4689. INT 2F - GOLD.COM - INSTALLATION CHECK
  4690.     AX = DC00h
  4691. Return: AL = state
  4692.         00h not installed
  4693.         FFh installed
  4694. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the
  4695.       code for F1; the purpose is to improve Kermit's VTxxx emulation
  4696. --------K-2FDC01-----------------------------
  4697. INT 2F - GOLD.COM - GET STATE
  4698.     AX = DC01h
  4699. Return: AL = status
  4700.         00h off
  4701.         01h on
  4702. SeeAlso: AX=DC00h,AX=DC02h
  4703. --------K-2FDC02-----------------------------
  4704. INT 2F - GOLD.COM - SET STATE
  4705.     AX = DC02h
  4706.     DL = new state
  4707.         00h off
  4708.         01h on
  4709. Return: AL = 00h (OK)
  4710. SeeAlso: AX=DC01h
  4711. --------t-2FDD-------------------------------
  4712. INT 2F - CappaCom programs - API
  4713.     AH = DDh
  4714.     AL = 00h general installation check
  4715.         Return: AL = FFh if any CappaCom programs are resident
  4716.     AL = FEh get info
  4717.         Return: ES:BX -> TSR info list (see #2354)
  4718.     AL = program identifier
  4719.         BH = function
  4720.         FDh get version
  4721.             Return: BX = version
  4722.         FFh installation check
  4723.             Return: AL = FFh if installed
  4724.                 BX = version
  4725.                 ES = segment of resident code
  4726.         others vary by program
  4727. Return: AL = status
  4728.         bit 7 set on error
  4729.         AL = 81h unknown function
  4730. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  4731.       conflict
  4732. Index:    installation check;SoftCom programs
  4733. Index:    installation check;CappaCom programs
  4734.  
  4735. Format of CappaCom TSR info list:
  4736. Offset    Size    Description    (Table 2354)
  4737.  00h  9 BYTEs    blank-padded ASCIZ program name
  4738.  09h    BYTE    program ID
  4739.  0Ah    WORD    program's PSP segment
  4740.  0Ch    WORD    program version (major in high byte)
  4741.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  4742.  12h    BYTE    number of interrupts hooked
  4743.  13h  5 BYTEs    interrupt numbers hooked by program
  4744.  18h  8 BYTEs    reserved
  4745. ----------2FDD-------------------------------
  4746. INT 2F - MIXFIX.EXE - API
  4747.     AH = DDh
  4748.     AL = function
  4749.         00h installation check
  4750.         Return: AX = 00DDh if installed
  4751.                 BX = version (BH = major, BL = minor)
  4752.         41h/61h get From: address
  4753.         Return: AX = 0001h
  4754.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  4755.         49h/69h get To: address
  4756.         Return: AX = 0001h
  4757.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  4758.         4Ah/6Ah get subject of mail
  4759.         Return: AX = 0001h
  4760.             ES:BX -> ASCIZ subject of handled mail
  4761.         4Dh/6Dh get mail name
  4762.         Return: AX = 0001h
  4763.             ES:BX -> ASCIZ full name of current mail file
  4764.         4Eh/6Eh get From: field
  4765.         Return: AX = 0001h
  4766.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  4767. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  4768.       other programs for mail handling.  The called programs may use the
  4769.       services described here to retrieve information about the mail being
  4770.       handled.
  4771. Index: installation check;MIXFIX.EXE
  4772. --------d-2FDD--BX7844-----------------------
  4773. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  4774.     AH = DDh
  4775.     BX = 7844h ('xD')
  4776.     CX = 4953h ('IS')
  4777.     DX = 4B3Fh ('K?')
  4778.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  4779.     ES:DI -> 25-byte data buffer (see #2355)
  4780. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  4781.        BX = 87BBh
  4782.        DX = B4C0h
  4783.        ES:DI buffer filled
  4784.     CX,CF destroyed
  4785. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  4786.  
  4787. Format of xDISK data buffer:
  4788. Offset    Size    Description    (Table 2355)
  4789.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  4790.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  4791.  05h    BYTE    flag: 01h if write protected, 00h if not
  4792.  06h    BYTE    flag: 01h if root directory full, 00h if not
  4793.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  4794.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  4795.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  4796.  0Ah  2 BYTEs    reserved
  4797.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  4798.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  4799.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  4800.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  4801.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  4802.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  4803.  12h    BYTE    flag: 01h terse display, 00h verbose display
  4804.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  4805.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  4806.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  4807.  16h    WORD    count of open files in RAM disk
  4808.  18h    BYTE    unused
  4809. --------N-2FDE00BL00-------------------------
  4810. INT 2F U - Novell Netware - RPRINTER, NPRINTER - INSTALLATION CHECK
  4811.     AX = DE00h
  4812.     BL = 00h
  4813. Return: AL = FFh If Rprinter/Nprinter Installed
  4814.     BX -> Program Segment Prefix N/Rprinter.exe
  4815. --------Q-2FDE00BX4456-----------------------
  4816. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  4817.     AX = DE00h
  4818.     BX = 4456h ("DV")
  4819.     CX = 5844h ("XD")
  4820.     DX = 4931h ("I1")
  4821. Return: AL = FFh if installed (even if other registers do not match)
  4822.     if BX,CX, and DX were as specified on entry,
  4823.         BX = 4845h ("HE")
  4824.         CX = 5245h ("RE")
  4825.         DX = 4456h ("DV")
  4826. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  4827. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  4828.       issue DESQview API calls other than those allowed from hardware ints
  4829. SeeAlso: AX=DE02h,INT 15/AX=5400h
  4830. --------Q-2FDE01-----------------------------
  4831. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  4832.     AX = DE01h
  4833.     BX = driver ID
  4834.     other registers as needed by driver
  4835. Notes:    XDI drivers should pass this call through to previous handler if ID
  4836.       does not match
  4837.     DESQview never calls this function
  4838. --------Q-2FDE01BX4450-----------------------
  4839. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  4840.     AX = DE01h
  4841.     BX = 4450h ("DP")
  4842.     CX = 4D49h ("MI")
  4843.     DX = 3039h ("09")
  4844. Return: AL = FFh if installed
  4845.         BX = 4D42h ("MB")
  4846.         CX = 4921h ("I!")
  4847.         DX = 8F4Fh
  4848.         ES:DI -> filename of DPMI host overlay
  4849. Note:    the installation check consists of testing for the existence of the
  4850.       character device QDPMI$$$
  4851. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  4852. Index:    installation check;QDPMI
  4853. --------U-2FDE01BX5242-----------------------
  4854. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  4855.     AX = DE01h
  4856.     BX = 5242h ("RB")
  4857.     CX:DX = program identifier
  4858.         656F7000h ("eop",0) for DVeop
  4859. Return: AX = 5242h ("RB") if installed
  4860.         ES:BX -> data or entry point (see #2356)
  4861.         CX = version number (CH = major, CL = minor)
  4862.  
  4863. (Table 2356)
  4864. Call DVeop entry point with:
  4865.     ES:DI -> callback address or 0000h:0000h to remove callback
  4866. Return: AX = status
  4867.         0000h failed (callback table full or attempted to remove non-
  4868.           existent callback)
  4869.         0001h successful
  4870.         ES:DI -> chaining address
  4871.     BX,CX,DX destroyed
  4872. Notes:    the callback function is called with a simulated interrupt when the
  4873.       DESQview window containing it is closed; it should perform all
  4874.       necessary cleanup and then perform a FAR jump to the chaining address
  4875.       or an IRET if the chaining address is 0000h:0000h
  4876.     if the program wishes to remove itself before the window is closed, it
  4877.       should call the DVeop entry point with the previously returned
  4878.       chaining address and ignore the returned chaining address.
  4879. --------U-2FDE01BX7474-----------------------
  4880. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  4881.     AX = DE01h
  4882.     BX = 7474h
  4883.     CL = function
  4884.         00h installation check
  4885.         Return: AL = FFh
  4886.         01h get process handle
  4887.         DX = keys on Open Window menu (DL = first, DH = second)
  4888.         Return: AX = process handle or 0000h if not running
  4889.         02h (v1.3+) set TMAN handle
  4890.         DX = TMAN process handle
  4891.         03h (v1.3+) set open keys to ignore on next CL=01h call
  4892.         DX = keys on Open Window menu (DL = first, DH = second)
  4893. Return: BX = 4F4Bh ("OK")
  4894.     DL destroyed
  4895. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  4896.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  4897. Index:    installation check;DVTXDI
  4898. --------U-2FDE01BX7575-----------------------
  4899. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  4900.     AX = DE01h
  4901.     BX = 7575h
  4902.     CX = function
  4903.         0000h installation check
  4904.         Return: AX = 00FFh if installed
  4905.         0001h turn on notification (currently unused)
  4906.         Return: AX = 0001h
  4907.         0002h turn off notification (currently unused)
  4908.         Return: AX = 0001h
  4909.         0003h get process information
  4910.         Return: AX = status
  4911.                 0000h failed
  4912.                 0001h successful
  4913.                 BX = last instantaneous time slice
  4914.                     in 1/100s (v1.10)
  4915.                     in 1/18s (v1.11+)
  4916.                 CX = number of processes
  4917.                 DX = number of "(starting)" records (v2.00+)
  4918.                 SI = number of records in process info array
  4919.                       (v2.00+) (always 15 for v1.x)
  4920.                 ES:DI -> process info array (see #2357,#2358)
  4921.         0004h get version
  4922.         Return: AH = major version
  4923.             AL = minor version
  4924.         0005h (v1.10+) get time since DESQview started
  4925.         Return: DX:AX = 1/100s since DV start (v1.10)
  4926.             DX:AX = 1/18s since DV start (v1.11+)
  4927.         0006h (v1.10+) get number of task switches
  4928.         Return: DX:AX = total task switches
  4929.             CX = task switches in last instantaneous interval
  4930. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  4931.       Daniel J. Bodoh
  4932.     for v1.00, function 0003h allocates common memory, which the caller
  4933.       must deallocate after reading the process information; only the
  4934.       currently used records are placed in the buffer
  4935.     for v1.10+, function 0003h merely returns a pointer to the internal
  4936.       array of process information; the caller should make a copy of the
  4937.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  4938.       those records with bit 7 of the first byte set are valid.
  4939. Index:    installation check;DVSIXDI
  4940.  
  4941. Format of DVSIXDI v1.00 information for one process:
  4942. Offset    Size    Description    (Table 2357)
  4943.  00h    BYTE    flags
  4944.         bit 7: process slot is valid
  4945.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  4946.           Open Windows menu, else undefined
  4947.  03h    WORD    Switch Windows window number
  4948.  05h    WORD    segment of process handle
  4949.  07h    WORD    number of tasks owned by process
  4950.  09h    WORD    mapping context of process (see #0320 at INT 15/AX=1016h)
  4951.  0Bh    DWORD    hook for other programs
  4952.  
  4953. Format of DVSIXDI v1.10-v2.00 information for one process:
  4954. Offset    Size    Description    (Table 2358)
  4955.  00h    BYTE    process flags (see #2359)
  4956.  01h    WORD    Open Window keys
  4957.  03h    WORD    Switch Windows number
  4958.  05h    WORD    segment of process handle
  4959.  07h    WORD    number of tasks for process
  4960.  09h    WORD    process mapping context
  4961.  0Bh    DWORD    time process started (relative to start of DESQview)
  4962.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  4963.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  4964.  17h    DWORD    total CPU time since process started
  4965.  1Bh    DWORD    CPU time at start of current instantaneous interval
  4966.  1Fh    DWORD    CPU time in current instantaneous interval
  4967.  23h    DWORD    hook for other programs
  4968. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  4969.  
  4970. Bitfields for DVSIXDI process flags:
  4971. Bit(s)    Description    (Table 2359)
  4972.  7    valid record
  4973.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  4974.       and only offsets 01h and 09h are valid
  4975.  5    (v2.00+) this app currently owns the CPU
  4976.  4    reserved (0)
  4977.  3    DESQview system task
  4978.  2    reserved (0)
  4979.  1    task has keyboard (currently unused)
  4980.  0    task swapped out (currently unused)
  4981. --------Q-2FDE01BXFFFE-----------------------
  4982. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  4983.     AX = DE01h
  4984.     BX = FFFEh
  4985.     CX = 4D47h ("MG")
  4986.     DX = 0052h (0,"R")
  4987. Return: AL = FFh
  4988.     DX = 584Dh
  4989. --------Q-2FDE02-----------------------------
  4990. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  4991.     AX = DE02h
  4992.     BX = mapping context of DESQview
  4993.     DX = handle of DESQview system task
  4994. Note:    driver should pass this call to previous handler after doing its work
  4995. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  4996. --------Q-2FDE03-----------------------------
  4997. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  4998.     AX = DE03h
  4999.     BX = mapping context of DESQview
  5000.     DX = handle of DESQview system task
  5001. Notes:    driver should pass this call to previous handler before doing its work
  5002.     DESQview makes this call when it is exiting, but before unhooking any
  5003.       interrupt vectors
  5004. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  5005. --------Q-2FDE04-----------------------------
  5006. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  5007.     AX = DE04h
  5008.     BX = mapping context of new process (see #0320 at INT 15/AX=1016h)
  5009.     DX = handle of process
  5010. Return: nothing
  5011. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  5012.       (see #2360) from "common" memory to control access to XMS memory
  5013.     all DOS, BIOS, and DV API calls are valid in handler
  5014.     driver should pass this call to previous handler after processing it
  5015. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  5016.  
  5017. Format of XMS XDI structure:
  5018. Offset    Size    Description    (Table 2360)
  5019.  00h    DWORD    pointer to 10-byte record???
  5020.  04h    DWORD    pointer to next XMS XDI structure
  5021.  08h    WORD    mapping context
  5022.  0Ah    BYTE    ???
  5023.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h"XMS"
  5024.         (FAR jump to next field)
  5025.  10h  6 BYTEs    FAR handler for XMS driver entry point
  5026.         (consists of a FAR CALL followed by RETF)
  5027. --------Q-2FDE05-----------------------------
  5028. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  5029.     AX = DE05h
  5030.     BX = mapping context of process (see #0320 at INT 15/AX=1016h)
  5031.     DX = handle of last task in process
  5032. Return: nothing
  5033. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  5034.     driver should pass this call to previous handler before processing it
  5035.     all DOS, BIOS, and DV API calls except those generating a task switch
  5036.       are valid in handler
  5037. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  5038. --------Q-2FDE06-----------------------------
  5039. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  5040.     AX = DE06h
  5041.     BX = mapping context of process containing task
  5042.     DX = handle of new task
  5043. Notes:    driver should pass this call to previous handler after processing it
  5044.     all DOS, BIOS, and DV API calls are valid in handler
  5045. --------Q-2FDE07-----------------------------
  5046. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  5047.     AX = DE07h
  5048.     BX = mapping context of process containing task
  5049.     DX = handle of task
  5050. Notes:    driver should pass this call to previous handler before processing it
  5051.     all DOS, BIOS, and DV API calls except those generating a task switch
  5052.       are valid in handler
  5053. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5054. --------Q-2FDE08-----------------------------
  5055. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5056.     AX = DE08h
  5057.     BX = mapping context of task being switched from
  5058.           (see #0320 at INT 15/AX=1016h)
  5059.     DX = handle of task being switched from
  5060. Notes:    invoked prior to task swap, interrupts, etc
  5061.     driver should pass this call to previous handler after processing it
  5062. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5063. --------Q-2FDE09-----------------------------
  5064. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5065.     AX = DE09h
  5066.     BX = mapping context of task being switched to
  5067.           (see #0320 at INT 15/AX=1016h)
  5068.     DX = handle of task being switched to
  5069. Notes:    state is restored except for interrupts
  5070.     driver should pass this call to previous handler before processing it
  5071. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5072. --------Q-2FDE0A-----------------------------
  5073. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5074.     AX = DE0Ah
  5075.     BX = mapping context of task receiving focus
  5076.     DX = handle of running task
  5077. Notes:    driver should pass this call to previous handler before processing it
  5078.     this call often occurs inside a keyboard interrupt
  5079.     DV 2.42 does not provide this call to XDI handlers running inside a
  5080.       window; instead, it directly calls the INT 2F handler which was
  5081.       active at the time DV started
  5082. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5083. --------Q-2FDE0B-----------------------------
  5084. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5085.     AX = DE0Bh
  5086.     BX = mapping context of DESQview system task
  5087.     CX = number of system memory paragraphs required for the use of all
  5088.           XDI drivers (DV will add this to system memory in DVP buffer)
  5089.     DX = handle of DESQview system task
  5090.     SI = mapping context of new process if it starts
  5091.     ES:DI -> DVP buffer
  5092. Return: CX incremented as needed
  5093. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5094.     driver should pass this call to previous handler before processing it
  5095. --------Q-2FDE0C-----------------------------
  5096. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5097.     AX = DE0Ch
  5098.     BX = mapping context of task being swapped out
  5099.           (see #0320 at INT 15/AX=1016h)
  5100.     DX = handle of DESQview system task
  5101. Note:    driver should pass this call to previous handler after processing it
  5102. --------Q-2FDE0D-----------------------------
  5103. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  5104.     AX = DE0Dh
  5105.     BX = mapping context of process just swapped in
  5106.           (see #0320 at INT 15/AX=1016h)
  5107.     DX = handle of DESQview system task
  5108. Note:    driver should pass this call to previous handler before processing it
  5109. --------Q-2FDE0E-----------------------------
  5110. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  5111.     AX = DE0Eh
  5112.     BX = mapping context of DESQview system task
  5113.     DX = handle of DESQview system task
  5114.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  5115. Note:    driver should pass this call to previous handler after processing it
  5116. --------Q-2FDE0F-----------------------------
  5117. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  5118.     AX = DE0Fh
  5119. Note:    DESQview 2.50+ calls this function just before it completes its
  5120.       initialization.  At the time of the call, DESQview has not yet
  5121.       changed any interrupt vectors
  5122. SeeAlso: AX=DE02h
  5123. --------Q-2FDE10-----------------------------
  5124. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  5125.     AX = DE10h
  5126.     BX = mapping context of process (see #0320 at INT 15/AX=1016h)
  5127.     DX = task handle of process
  5128. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  5129.       similar to AX=DE07h but allows the XDI handler to make calls which
  5130.       cause context switches
  5131. SeeAlso: AX=DE06h,AX=DE07h
  5132. --------c-2FDF00-----------------------------
  5133. INT 2F - HyperWare programs - INSTALLATION CHECK
  5134.     AX = DF00h
  5135.     BX = product code (see #2361)
  5136.     CX = 0000h
  5137.     DX = 0000h
  5138. Return: AL = status
  5139.         00h not installed
  5140.         FFh multiplex number in use
  5141.         CX = 5948h ('YH') if selected product installed
  5142.         ---HyperDisk---
  5143.         BX = code segment of resident portion
  5144.         DX = HyperDisk local data version
  5145. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5146. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  5147. SeeAlso: INT 13/AX=8EEDh
  5148. Index:    installation check;HyperDisk|installation check;HyperStb
  5149. Index:    installation check;HyperKey|installation check;HyperScreen
  5150. Index:    HyperDisk;installation check|HyperStb;installation check
  5151. Index:    HyperKey;installation check|HyperScreen;installation check
  5152.  
  5153. (Table 2361)
  5154. Values for HyperWare product code:
  5155.  4248h    ('BH') HyperStb
  5156.  4448h    ('DH') HyperDisk v4.20+
  5157.  4B48h    ('KH') HyperKey
  5158.  5348h    ('SH') HyperScreen
  5159. --------Q-2FDF00BX5445-----------------------
  5160. INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
  5161.     AX = DF00h
  5162.     BX = 5445h ('TE')
  5163.     CX = 4C54h ('LT')
  5164.     DX = 5352h ('SR')
  5165. Return: BX = 5454h ('TT') if installed
  5166.     CX = 494Eh ('IN') if installed
  5167.     DX = 5454h ('ST') if installed
  5168. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  5169.       which provides an INT 14h interface to the network
  5170. Range:    AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
  5171. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
  5172. --------N-2FDF01BX0000-----------------------
  5173. INT 2F U - MSG.COM - INSTALLATION CHECK
  5174.     AX = DF01h
  5175.     BX = 0000h
  5176. Return: AX = FDFFh if installed
  5177.        BX = segment of resident code
  5178. Program: MSG.COM is a TSR for intercepting incoming Novell broadcast
  5179.       messages written by Gary Dobbins (Dobbins@Arizona.Edu)
  5180. --------c-2FDF01BX4448-----------------------
  5181. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  5182.     AX = DF01h
  5183.     BX = 4448h ('DH')
  5184. Return: AX = 0000h if function supported
  5185.         BX = number of cache buffers in use
  5186.         CX = number of cache buffers which have been modified
  5187.         DL = caching flags (see #2362)
  5188. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  5189. SeeAlso: AX=DF00h,AX=DF02h
  5190.  
  5191. Bitfields for HyperDisk caching flags:
  5192. Bit(s)    Description    (Table 2362)
  5193.  0    staged writes enabled for floppy disks
  5194.  1    staged writes enabled for hard disks
  5195.  2    writes verified on floppy disks
  5196.  3    writes verified on hard disks
  5197.  4    reserved (0)
  5198.  5    reserved (0)
  5199.  6    floppy caching enabled
  5200.  7    all caching functions enabled
  5201. --------Q-2FDF01-----------------------------
  5202. INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
  5203.     AX = DF01h
  5204. Return: nothing???
  5205. Note:    invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
  5206.       to close the socket corresponding to the file handle set with
  5207.       AX=DF02h; NOP if no file handle was ever set
  5208. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  5209. --------c-2FDF02BX4448-----------------------
  5210. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  5211.     AX = DF02h
  5212.     BX = 4448h ('DH')
  5213.     DL = new caching flags (see #2362)
  5214. Return: AX = 0000h if supported
  5215.         BX = number of cache buffers in use
  5216.         CX = number of cache buffers which have been modified
  5217.         DL = previous caching flags (see #2362)
  5218. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5219. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  5220. SeeAlso: AX=DF00h,AX=DF01h
  5221. --------Q-2FDF02-----------------------------
  5222. INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
  5223.     AX = DF02h
  5224.     BX = file handle for connection's socket
  5225. Return: AX = status
  5226.         0000h successful
  5227.         FFFFh no more room in TELTSR's JFT
  5228. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  5229. Notes:    the indicated file handle becomes owned by TELTSR, and is closed in
  5230.       the caller's JFT
  5231.     multiple calls to this function will override the previous assignment
  5232.       without closing the previous file; use AX=DF01h before further calls
  5233. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  5234. --------U-2FE000-----------------------------
  5235. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  5236.     AX = E000h
  5237. Return: AX = 4A52h ("JR") if present
  5238. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  5239.       apparent DOS version analogously to MS-DOS SETVER
  5240. Notes:    this installation check differs from the usual one of returning AL=FFh
  5241.     the SETDRVER API is fully emulated by Matthias Paul's FREEVER
  5242. SeeAlso: AX=E000h/DX=4D50h,AX=E001h,INT 21/AH=52h
  5243. --------j-2FE000-----------------------------
  5244. INT 2F - KAOSHIDE - INSTALLATION CHECK
  5245.     AX = E000h
  5246. Return: AL = FFh if installed
  5247. Program: KAOSHIDE ('Hidden Kaos') is a PD joke TSR which randomly capitalizes
  5248.       alphabetic keys, written by Philip Maland. Although not a virus,
  5249.       v2.0 uses some viral-like techniques to hide itself from
  5250.       memory-reports by reducing DOS memory size.
  5251. --------U-2FE000DX4D50-----------------------
  5252. INT 2F - FREEVER v1.0+ - INSTALLATION CHECK
  5253.     AX = E000h
  5254.     DX = 4D50h ('MP')
  5255. Return: AL = FFh if installed
  5256.         AH = AMIS INT 2Dh multiplex ID
  5257.         CX = FREEVER version (CH=major, CL=minor)
  5258.         DX:DI -> AMIS-compliant signature (see #1904)
  5259.         (vendor ID is "M. Paul ", program name is "FREEVER ")
  5260. Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
  5261.       to SETVER for any DOS-compatible OS, written by Matthias Paul
  5262. Note:    FREEVER emulates INT 21/AH=30h, INT 21/AX=3306h, INT 21/AX=4412h,
  5263.       INT 21/AX=4452h, and SETDRVER's API on INT 2F/AX=E00xh, as well as
  5264.       providing an AMIS API on INT 2Dh
  5265. SeeAlso: AX=E000h"SETDRVER",INT 21/AH=30h,INT 21/AX=3306h,INT 21/AX=4452h
  5266. --------K-2FE000DX5354-----------------------
  5267. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  5268.     AX = E000h
  5269.     DX = 5354h ("ST")
  5270. Return: AL = FFh if installed
  5271.         BX = version (BH = major, BL = BCD minor)
  5272.         DX = segment of resident code
  5273. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  5274. --------U-2FE001-----------------------------
  5275. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  5276.     AX = E001h
  5277. Return: AH = major version
  5278.     AL = minor version
  5279. SeeAlso: AX=E000h
  5280. --------U-2FE002-----------------------------
  5281. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  5282.     AX = E002h
  5283. Return: AL = FFh if successful
  5284.         BH = major DOS version
  5285.         BL = minor DOS version
  5286.         CH = DOS version flag
  5287.         CL = OEM number
  5288.         DH = major DR DOS version number (FFh if unknown)
  5289.         DL = minor DR DOS version number (FFh if unknown)
  5290. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  5291. --------U-2FE003-----------------------------
  5292. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  5293.     AX = E003h
  5294.     BH = new major DOS version
  5295.     BL = new minor DOS version
  5296.     CH = new DOS version flag
  5297.     CL = new DOS revision number
  5298.     DH = new OEM number
  5299. SeeAlso: AX=E002h
  5300. --------U-2FE004-----------------------------
  5301. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  5302.     AX = E004h
  5303. Return: AL = FFh if successful
  5304. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  5305. --------U-2FE005-----------------------------
  5306. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  5307.     AX = E005h
  5308. Return: AL = FFh if successful
  5309. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  5310. --------U-2FE006-----------------------------
  5311. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  5312.     AX = E006h
  5313. Return: AL = FFh if successful
  5314.         BL = status
  5315.         01h resident and active
  5316.         02h resident and inactive
  5317. --------U-2FE007-----------------------------
  5318. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  5319.     AX = E007h
  5320. Return: AL = FFh if successful
  5321.         BL = status
  5322.         00h if TaskMAX not loaded before SETDRVER
  5323.         FFh if TaskMAX was loaded before SETDRVER
  5324. SeeAlso: AX=E003h
  5325. --------U-2FE0-------------------------------
  5326. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  5327.     AH = E0h
  5328.     AL = 08h-10h
  5329. --------K-2FE100-----------------------------
  5330. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  5331.     AX = E100h
  5332. Return: AX = 0001h if installed
  5333.         DS:SI -> ASCIZ hotkey name
  5334.         DS:DI -> ASCIZ recording filename
  5335. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  5336.       by P2 Enterprises
  5337. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  5338. Index:    hotkeys;Phantom2
  5339. --------K-2FE101-----------------------------
  5340. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  5341.     AX = E101h
  5342.     BX = function mask (see #2363)
  5343.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  5344.     DS:DX -> ASCIZ filespec if BX bit 7 set
  5345. SeeAlso: AX=E100h
  5346. Index:    hotkeys;Phantom2
  5347.  
  5348. Bitfields for Phantom2 function mask:
  5349. Bit(s)    Description    (Table 2363)
  5350.  0    record
  5351.  1    play
  5352.  2    QuickPlay
  5353.  3    loop
  5354.  4    mode display toggle
  5355.  5    sound toggle
  5356.  6    set hotkey
  5357.  7    set filespec
  5358. --------K-2FE102-----------------------------
  5359. INT 2F - Phantom2 v1.1+ - UNINSTALL
  5360.     AX = E102h
  5361. Return: AX = status
  5362.         0001h removal successful
  5363.         0002h not installed as TSR
  5364.         FFFFh disabled but not removed
  5365. SeeAlso: AX=E100h
  5366. --------K-2FE103-----------------------------
  5367. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  5368.     AX = E103h
  5369. Return: AX = 0001h
  5370. SeeAlso: AX=E100h
  5371. --------y-2FE200-----------------------------
  5372. INT 2F - SecureDevice - LOGIN TO DRIVE
  5373.     AX = E200h
  5374.     DL = drive number (0 = A:)
  5375.     DS:SI -> 104-byte key
  5376. Return: AL = status
  5377.         00h unable to determine key's validity
  5378.         01h key is valid
  5379.         FFh key is invalid
  5380. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  5381.       Arthur Helwig which turns one or more disk files into encrypted
  5382.       logical drives
  5383. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  5384. --------y-2FE201-----------------------------
  5385. INT 2F - SecureDevice - GET INFORMATION
  5386.     AX = E201h
  5387.     DX = driver index (0000h = first loaded)
  5388. Return: AL = number of volumes handled by driver
  5389.     DL = drive number of first volume (00h = A:)
  5390. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  5391. --------y-2FE203-----------------------------
  5392. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  5393.     AX = E203h
  5394.     DL = drive number (00h = A:) or FFh for all drives
  5395. Return: nothing
  5396. SeeAlso: AX=E200h,AX=E209h
  5397. --------y-2FE209DX0000-----------------------
  5398. INT 2F - SecureDevice - INSTALLATION CHECK
  5399.     AX = E209h
  5400.     DX = 0000h
  5401. Return: AX = 1DEAh if installed
  5402.         DX = number of drivers installed
  5403. --------K-2FE300-----------------------------
  5404. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  5405.     AX = E300h
  5406. Return: AL = state
  5407.         00h not installed
  5408.         FEh if installed but suspended (v3.0+)
  5409.         FFh installed
  5410. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  5411. Range:    AH=C0h to AH=FFh, selected by commandline switch
  5412. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  5413. SeeAlso: AX=E307h,INT 66"Newkey"
  5414. --------V-2FE300-----------------------------
  5415. INT 2F - Blank - INSTALLATION CHECK
  5416.     AX = E300h
  5417. Return: AL = FFh if installed
  5418.         ES = resident code segment
  5419. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  5420. Note:    AH=E3h is the default, which may be reconfigured by the installation
  5421.       program in the registered version
  5422. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  5423. Index:    screen saver;Blank
  5424. --------K-2FE301-----------------------------
  5425. INT 2F U - ANARKEY.COM v2+ - GET ???
  5426.     AX = E301h
  5427. Return: DX:BX -> ??? (see #2364,#2365)
  5428. SeeAlso: AX=E300h
  5429.  
  5430. Format of returned data structure for ANARKEY v2.0:
  5431. Offset    Size    Description    (Table 2364)
  5432.  -7   7 BYTEs    signature ('ANARKEY')
  5433.  00h    WORD    ??? (I see 0001h in v2.0)
  5434.  02h    WORD    ??? (I see 0001h in v2.0)
  5435.  04h    WORD    ??? (I see 0 in v2.0)
  5436.  06h    WORD    PSP segment of next program loaded
  5437.  
  5438. Format of returned data structure for ANARKEY v3+:
  5439. Offset    Size    Description    (Table 2365)
  5440.  -1    BYTE    multiplex number
  5441.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  5442.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  5443.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  5444.  05h    WORD    PSP segment of next program loaded
  5445. --------K-2FE302-----------------------------
  5446. INT 2F U - ANARKEY.COM v3+ - ???
  5447.     AX = E302h
  5448.     BL = ???
  5449. Return: ???
  5450. SeeAlso: AX=E300h
  5451. --------K-2FE303-----------------------------
  5452. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  5453.     AX = E303h
  5454.     BL = function
  5455.         01h toggle insert mode
  5456.         02h display contents of history buffer
  5457.         03h write history buffer to file
  5458.         ES:DX -> file name
  5459.         04h clear history buffer
  5460.         05h undefine all aliases
  5461.         06h show aliases
  5462.         07h list programs using Unix switchar
  5463.         08h jump to bottom of history buffer
  5464.         09h (v4.0) add string to history buffer
  5465.         ES:DX -> ASCIZ string
  5466.         0Ah (v4.0) ???
  5467.         ES:DX -> ???
  5468.         0Bh (v4.0) copy string to edit buffer for use as next input line
  5469.         ES:DX -> ASCIZ string
  5470.         0Ch (v4.0) ???
  5471.         0Dh (v4.0) copy ??? to ???
  5472.         0Eh (v4.0) ???
  5473.         0Fh (v4.0) ???
  5474.         10h (v4.0) set ??? flag
  5475.         11h (v4.0) display error message about running in EMS under Windows
  5476. Return: ???
  5477. SeeAlso: AX=E300h
  5478. --------K-2FE304-----------------------------
  5479. INT 2F U - ANARKEY.COM v2+ - ???
  5480.     AX = E304h
  5481.     BL = ???
  5482. Return: ???
  5483. SeeAlso: AX=E300h
  5484. --------K-2FE305-----------------------------
  5485. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  5486.     AX = E305h
  5487.     BL = new state
  5488.         01h suspended
  5489.         00h enabled
  5490. SeeAlso: AX=E300h
  5491. --------K-2FE306-----------------------------
  5492. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5493.     AX = E306h
  5494. Return: AX = ???
  5495. SeeAlso: AX=E300h
  5496. --------K-2FE307-----------------------------
  5497. INT 2F U - ANARKEY.COM v4.0 - GET ???
  5498.     AX = E307h
  5499. Return: AX = ???
  5500.     BL = ???
  5501. SeeAlso: AX=E300h
  5502. --------K-2FE337-----------------------------
  5503. INT 2F - INT16.COM - INSTALLATION CHECK
  5504.     AX = E337h
  5505. Return: AX = 0013h if installed
  5506. Program: INT16.COM is an INT16 keyboard BIOS replacement for
  5507.       INT 16/AH=00h-02h,10h-12h (based on K3) written by Martin Gerdes
  5508.       and published in c't 05/1990.
  5509. SeeAlso: AX=ED58h
  5510. --------l-2FE44D-----------------------------
  5511. INT 2F - NDOS - API
  5512.     AX = E44Dh
  5513. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  5514.       Norton Utilities
  5515. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  5516.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  5517.       check returns AX=44EEh instead of AX=44DDh
  5518. SeeAlso: AX=D44Dh,AX=E44Eh
  5519. --------l-2FE44E-----------------------------
  5520. INT 2F C - NDOS - AWAITING USER INPUT
  5521.     AX = E44Eh
  5522.     BX = condition
  5523.         0000h NDOS is ready to display prompt
  5524.         0001h NDOS has displayed the prompt, about to accept user input
  5525. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  5526. SeeAlso: AX=E44Dh
  5527. --------K-2FE44FBX0000-----------------------
  5528. INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  5529.     AX = E44Fh
  5530.     BX = 0000h
  5531. Return: AX = 44EEh if installed
  5532. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  5533.       Norton Utilities
  5534. Note:    this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  5535.       which emulate the 4DOS and NDOS keystack
  5536. SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
  5537. --------K-2FE44FBX0001-----------------------
  5538. INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  5539.     AX = E44Fh
  5540.     BX = 0001h
  5541.     CX = number of keystrokes (01h-FFh)
  5542.     DS:DX -> keystroke list (one word per keystroke)
  5543. Return: AX = status
  5544.         0000h successful
  5545.         nonzero failed
  5546.     BX,CX,DX destroyed
  5547. Notes:    the keystrokes are the exact values to return from subsequent calls to
  5548.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  5549.         0000h causes subfunctions 01h and 11h to indicate an empty
  5550.               keyboard buffer
  5551.         FFFFh is followed by a word indicating the number of clock
  5552.               ticks to delay before the next faked keystroke
  5553.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  5554.       invocation, and does not range-check CX; it will overwrite memory
  5555.       following the resident portion if CX is greater than 100h.
  5556.     this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
  5557.       which emulate the 4DOS and NDOS keystack
  5558. SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
  5559. --------U-2FE600CL30-------------------------
  5560. INT 2F - Virtual 486 - INSTALLATION CHECK
  5561.     AX = E600h
  5562.     CL = 30h
  5563.     BX = C0DEh
  5564. Return: BX = DEC0h if installed
  5565. Program: Virtual 486 is a 80486 CPU emulator for an 80386 by Solar Designer
  5566. ----------2FE700BX4158-----------------------
  5567. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  5568.     AX = E700h
  5569.     BX = 4158h ("AX")
  5570.     CX = 4953h ("IS")
  5571.     DX = 4845h ("HE")
  5572. Return: AL = FFh if installed
  5573.         BX = 4C4Fh ("LO") if ??? installed
  5574.         CX = 4F4Bh ("OK")
  5575.         DX = 4F55h ("OU")
  5576.         ES:DI -> ???
  5577. Range:    AH=C0h to AH=FFh, selected by scanning AH=E7-FFh, then AH=C0h-E6h
  5578. Note:    called by QDPMI when its Real to Protected Mode Switch Entry Point
  5579.       is called
  5580. --------f-2FE77EBX0000-----------------------
  5581. INT 2F - CTDEMN - INSTALLATION CHECK
  5582.     AX = E77Eh
  5583.     BX = 0000h
  5584.     CX = 4F4Dh ('OM')
  5585.     DX = 5453h ('TS')
  5586. Return: AX = 7EE7h if installed
  5587.         BX = resident code segment
  5588.         CX = 6F6Dh ('om')
  5589.         DX = 7473h ('ts')
  5590. Program: CTDEMN is a file daemon TSR by Simultan AG
  5591. --------E-2FED00-----------------------------
  5592. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  5593.     AX = ED00h
  5594.     BL = DOS extender ID (see #2366)
  5595. Return: AL = status
  5596.         00h not installed
  5597.         FFh installed
  5598.         SI = 5048h ("PH")
  5599.         DI = 4152h ("AR")
  5600.         CH = major version number
  5601.         CL = minor version number
  5602.         DX = flags
  5603.             bit 0: running under DPMI
  5604.             bit 1: running under Phar Lap VMM
  5605.         if running under DPMI:
  5606.             BX = DPMI version (BH = major, BL = minor)
  5607. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  5608.  
  5609. (Table 2366)
  5610. Values for Phar Lap DOS extender ID:
  5611.  01h    286dosx v1.3+ (Software Development Kit)
  5612.  02h    286dosx v1.3+ (Run-Time Kit)
  5613.  03h    386dosx v4.0+ (SDK)
  5614.  04h    386dosx v4.0+ (RTK)
  5615. --------E-2FED03-----------------------------
  5616. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  5617.     AX = ED03h
  5618.     CX = real-mode code segment
  5619.     DX = real-mode data segment
  5620. Return: CF clear if successful
  5621.         CX = protected-mode code segment selector
  5622.         DX = protected-mode data segment selector
  5623.         ES:DI -> real-mode entry point for calling protected-mode functions
  5624.               (see INT 21/AX=250Dh)
  5625.     CF set on error
  5626.         AX = error code
  5627.         0008h unable to allocate LDT descriptors
  5628. --------E-2FED10BL05-------------------------
  5629. INT 2F - Pharlap DOS Extender - ???
  5630.     AX = ED10h
  5631.     BL = 05h
  5632.     ES:SI -> ??? structure
  5633. Return: AX = ???
  5634.     SI = ???
  5635.     DI = ???
  5636. SeeAlso: AX=ED00h,AX=ED11h
  5637. --------E-2FED11BL05-------------------------
  5638. INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
  5639.     AX = ED11h
  5640.     BL = 05h
  5641.     CX = ???
  5642.     DX = ???
  5643.     ES:SI -> ??? structure
  5644.     SS:SP = new stack ???
  5645. Return: ???
  5646. Note:    called immediately prior to terminating program with INT 21/AX=4CFFh
  5647. SeeAlso: AX=ED00h,AX=ED10h
  5648. --------K-2FED58-----------------------------
  5649. INT 2F U - K5.COM - INSTALLATION CHECK
  5650.     AX = ED58h
  5651. Return: AX = 000Dh if installed
  5652.         ES = resident code segment
  5653.         BX = ??? (9999h)
  5654.         ???
  5655. Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
  5656. SeeAlso: AX=E337h,INT 16/AX=AF20h
  5657. --------E-2FED80-----------------------------
  5658. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  5659.     AX = ED80h
  5660.     BL = DOS extender ID (see #2366)
  5661.     SI = 5048h ("PH")
  5662.     DI = 4152h ("AR")
  5663.     ???
  5664. Return: ???
  5665. --------O-2FEDC8BX0000-----------------------
  5666. INT 2F - Novell ??? - INSTALLATION CHECK???
  5667.     AX = EDC8h ('EDC' = Novell European Development Center)
  5668.     BX = 0000h
  5669.     CX = 0000h
  5670.     DX = 1234h
  5671. Return: ???
  5672. Desc:    called by Novell DOS 7 LOCK command during installation; purpose
  5673.       unknown
  5674. --------y-2FEE00-----------------------------
  5675. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  5676.     AX = EE00h
  5677. Return: AL = FFh if installed
  5678. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  5679. SeeAlso: INT 21/AH=40h"NB.SYS"
  5680. --------U-2FEE00-----------------------------
  5681. INT 2F - XVIEW - INSTALLATION CHECK
  5682.     AX = EE00h
  5683. Return: AX = 00FFh if installed
  5684. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  5685. --------N-2FEE00-----------------------------
  5686. INT 2F - WEB v4.02 - INSTALLATION CHECK
  5687.     AX = EE00h
  5688. Return: AL = status
  5689.         00h not installed
  5690.         FFh installed
  5691. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5692. SeeAlso: AH=EEh"WEB",AX=EEF0h
  5693. --------U-2FEE01-----------------------------
  5694. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  5695.     AX = EE01h
  5696.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  5697. Return: AX = status (see #2367)
  5698. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  5699.       database; the current database is searched first
  5700. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  5701.  
  5702. (Table 2367)
  5703. Values for XVIEW function status:
  5704.  0000h    successful
  5705.  00F1h    unknown subfunction
  5706.  00F2h    unable to pop up
  5707. --------U-2FEE02-----------------------------
  5708. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  5709.     AX = EE02h
  5710.     DX = physical page number or anchor page number (see #2368)
  5711. Return: AX = status (see #2367)
  5712. Note:    physical page numbers are assigned by the hypertext compiler, and
  5713.       will change if a page is inserted in the middle
  5714. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  5715.  
  5716. (Table 2368)
  5717. Values for XVIEW anchor page number:
  5718.  FFEAh    _Credits
  5719.  FFECh    _SearchTopics
  5720.  FFEDh    _SearchText
  5721.  FFF0h    _ManualList
  5722.  FFF5h    _HelpOnHelp
  5723.  FFF8h    _HomePage
  5724.  FFF9h    _IndexPage
  5725. --------U-2FEE03-----------------------------
  5726. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  5727.     AX = EE03h
  5728.     DS:DX -> data packet (see #2369)
  5729. Return: AX = status (see #2367)
  5730. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  5731.  
  5732. Format of XVIEW data packet:
  5733. Offset    Size    Description    (Table 2369)
  5734.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  5735.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  5736.  08h    WORD    page number (0000h if keyword used)
  5737.  0Ah  6 BYTEs    reserved
  5738. --------U-2FEE04-----------------------------
  5739. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  5740.     AX = EE04h
  5741. Return: AX = status (see #2367)
  5742. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  5743. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  5744. --------U-2FEE05-----------------------------
  5745. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  5746.     AX = EE05h
  5747. Return: AX = status (see #2367)
  5748. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  5749. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  5750. --------U-2FEE06-----------------------------
  5751. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  5752.     AX = EE06h
  5753. Return: AX = status (see also AX=EE01h)
  5754.         0001h specified filename is not an xText database
  5755.         0002h no databases found
  5756.         0003h bad data in file
  5757.         0004h memory shortage
  5758.         0005h unable to open the requested file
  5759.         0007h invalid page number for file
  5760. Note:    although this call is not required, the exit code can alert the
  5761.       caller to problems; if the call is not made, the program should
  5762.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  5763.       and should not get keyboard input or attempt disk accesses during
  5764.       the delay
  5765. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  5766. --------N-2FEE-------------------------------
  5767. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  5768.     AH = EEh
  5769.     AL = module ID (see #2370)
  5770. Return: AX = 0000h if installed
  5771.         ES:DI -> far entry point for module-specific API calls
  5772.           (see #2371,#2372,#2373,#2374,#2375)
  5773. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5774. SeeAlso: AX=EE00h"WEB"
  5775.  
  5776. (Table 2370)
  5777. Values for WEB module ID:
  5778.  10h    server module (SERVER.EXE)
  5779.  20h    client module (CLIENT.EXE)
  5780.  30h    mail module (MAIL.EXE)
  5781.  40h    spooler (PCSPOOL.EXE)
  5782.  50h    kernel module (KERNEL.EXE)
  5783.  60h    SAP module (KERNEL.EXE)
  5784.  70h    resident station manager (SM.EXE)
  5785.  90h    router module (ROUTER.EXE)
  5786.  
  5787. (Table 2371)
  5788. Call server module entry point with:
  5789.     BX = function
  5790.         0000h remove server module
  5791.         Return: AX = status (0000h if successful, else WEB error code)
  5792.         0001h create SYSINFO file
  5793.         Note:    the SYSINFO file is used by the station manager when
  5794.               displaying info for a particular station
  5795.         0002h get server object table
  5796.         Return: CX = number of server objects
  5797.             ES:DI -> server object table
  5798.         Note:    server objects include drives and devices that the
  5799.               server module controls
  5800.         0003h get server variables
  5801.         Return: ES:DI -> server variables
  5802.  
  5803. (Table 2372)
  5804. Call client module entry point with:
  5805.     BX = function
  5806.         0000h remove client module
  5807.         Return: AX = status (0000h if successful, else WEB error code)
  5808.         0001h decrement client-only flag
  5809.         0002h increment client-only flag
  5810.         0005h set device capture
  5811.         Note:    decrements DeviceOutput flag, telling the spooler that
  5812.               it may trap device output again
  5813.         0006h clear device capture
  5814.         Note:    increments DeviceOutput flag, telling the spooler that
  5815.               it should not trap device output (this is used
  5816.               internally by the spooler to prevent it from trapping
  5817.               its own output)
  5818.         0007h get client debug pointer
  5819.         Return: ES:DI -> client debug data structure (see #2376)
  5820.         0008h get root drive
  5821.         Return: AL = WEB startup drive
  5822.         0009h get maximum possible drive/device redirections
  5823.         Return: AL = maximum drive redirections
  5824.             CH = maximum LPTx redirections
  5825.             CL = maximum COMx redirections
  5826.         000Ah suspend client
  5827.         Return: AX = previous value of Suspend flag
  5828.         000Bh resume client
  5829.         Return: AX = previous value of Suspend flag
  5830.         000Ch get instance data
  5831.         CX = maximum number of structures in array
  5832.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  5833.               (see #2377)
  5834.         Return: CX = number of structures actually returned
  5835.         Note:    used internally by WEB4WIN
  5836.  
  5837. (Table 2373)
  5838. Call mail module entry point with:
  5839.     BX = function
  5840.         0000h remove mail module
  5841.         Return: AX = status (0000h successful, else WEB error code)
  5842.         0001h set mail poll
  5843.         Note:    schedules the WEB mail module
  5844.         0002h set mail notify
  5845.         Note:    sets the Notify flag, which determines whether the
  5846.               user will be notified when mail is received
  5847.         0003h clear mail notify
  5848.         Note:    clears the Notify flag, which determines whether the
  5849.               user will be notified when mail is received
  5850.         0004h check whether new mail has arrived
  5851.         Return: AL = new mail status
  5852.                 00h no new mail since last call
  5853.                 else new mail has arrived
  5854.         Note:    also clears the new-mail flag after retrieving it
  5855.         0005h send notify
  5856.         ES:DI -> name of WEB user to be notified
  5857.         0006h get post office
  5858.         Return: ES:DI -> full network path of Post Office subdirectory
  5859.  
  5860. (Table 2374)
  5861. Call spooler entry point with:
  5862.     BX = function
  5863.         0000h remove PCSpool module
  5864.         Return: AX = status (0000h successful, else WEB error code)
  5865.         0001h set spooler poll
  5866.         Note:    schedules the WEB spooler
  5867.         0002h check spooler changed
  5868.         Return:    AX = 0000h
  5869.         Note:    this call is a NOP in current versions of WEB
  5870.  
  5871. (Table 2375)
  5872. Call kernel entry point with:
  5873.     BX = function
  5874.         0000h remove kernel module
  5875.         Return: AX = status (0000h successful, else WEB error code)
  5876.         0001h set kernel ^S filter
  5877.         DL = new state (00h don't filter ^S, nonzero do filter)
  5878.         0002h get kernel data area
  5879.         Return: ES:DI -> kernel data area
  5880.         0003h display dialog box
  5881.         CL = dialog box type
  5882.             00h password
  5883.             01h E-Note received notification
  5884.             02h Novell login
  5885.             03h general notification
  5886.         DL = number of rows to display
  5887.         ES:SI -> array of far pointers to rows to be displayed
  5888.         ES:DI -> Pascal-style input buffer
  5889.         Return: AX = status (0000h successful, else error code)
  5890.         0004h kernel service events
  5891.         0005h get kernel's in-critical-section flag
  5892.         Return: ES:DI -> kernel InCriticalSection flag
  5893.         0006h schedule DOS event
  5894.         AL = directive
  5895.             00h do not ignore WEB ExtraBusy flag
  5896.             01h ignore ExtraBusy flag
  5897.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5898.         ES:SI -> WEB AES Event Control Block (ECB) (see #2378)
  5899.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  5900.               one used by IPX; this call schedules a special ECB
  5901.               to be executed at a later time.  Unlike IPX ECBs,
  5902.               the timeout must be set explicitly by the caller
  5903.             this function also calls function 0004h
  5904.         0007h check busy
  5905.         AL = directive
  5906.             00h do not ignore WEB ExtraBusy flag
  5907.             01h ignore ExtraBusy flag
  5908.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  5909.         Return: AX = status (0000h not busy, else busy)
  5910.         0008h set keyboard intercept
  5911.         Note:    currently a NOP which returns immediately
  5912.         0009h get keyboard intercept
  5913.         Note:    currently a NOP which returns immediately
  5914.         000Ah get dialog flags
  5915.         Return: ES:DI -> kernel dialog flags (see #2379)
  5916.         000Bh get network path
  5917.         Return: ES:DI -> fully-qualified network path of file where
  5918.                 the screen is stored on Dialog calls
  5919.         000Ch kernel alternate dialog
  5920.         CL = dialog box type
  5921.             00h password
  5922.             01h E-Note received notification
  5923.             02h Novell login
  5924.             03h general notification
  5925.         DL = number of rows to display
  5926.         ES:SI -> array of far pointers to rows to be displayed
  5927.         ES:DI -> Pascal-style input buffer
  5928.         Return: AX = status (0000h successful, else error code)
  5929.         Note:    this function is identical to function 0003h except
  5930.               that it does not notify WEB4WIN of the impending
  5931.               dialog request
  5932.         000Dh get machine/operating system type
  5933.         Return: AX = machine/operating system type
  5934.                 01h IBM PC, MS-DOS
  5935.                 02h IBM PC, DOSV (Japanese)
  5936.                 03h NEC PC-9800, JDOS (Japanese)
  5937.                 04h IBM PC, Korean DBC DOS
  5938.  
  5939. Format of client debug data structure:
  5940. Offset    Size    Description    (Table 2376)
  5941.  00h    WORD    total files
  5942.  02h    WORD    files free
  5943.  04h    WORD    no files
  5944.  06h    WORD    minimum files
  5945.  08h    WORD    total FCBs
  5946.  0Ah    WORD    total safe FCBs
  5947.  0Ch    WORD    FCBs in use
  5948.  0Eh    WORD    wrong FCB
  5949.  10h    WORD    compressed
  5950.  12h    WORD    retransmits
  5951.  
  5952. Format of WIN_INSTANCE_DATA structure:
  5953. Offset    Size    Description    (Table 2377)
  5954.  00h    DWORD    real-mode pointer to data to be instanced
  5955.  04h    WORD    size of data to be instanced
  5956.  
  5957. Format of WEB AES Event Control Block:
  5958. Offset    Size    Description    (Table 2378)
  5959.  00h    DWORD    link address
  5960.  04h    WORD    ESR address
  5961.  08h    BYTE    InUse flag
  5962.  09h    BYTE    completion code
  5963.  0Ah  3 BYTEs    reserved
  5964.  0Dh    WORD    timeout
  5965.  0Fh    BYTE    IgnoreExtra flag
  5966.  10h    WORD    PSP
  5967.  12h    DWORD    DTA
  5968.  16h    WORD    AX value for DOS critical information
  5969.  18h    WORD    BX value for DOS critical information
  5970.  1Ah    WORD    CX value for DOS critical information
  5971.  1Ch    WORD    DX value for DOS critical information
  5972.  
  5973. (Table 2379)
  5974. Values for kernel dialog flags:
  5975.  01h    dialog will timeout
  5976.  02h    display stars instead of entered keystrokes
  5977. --------N-2FEEF0-----------------------------
  5978. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  5979.     AX = EEF0h
  5980.     BX = notification function ID (see #2380)
  5981. Return: varies by notification function
  5982. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  5983. Note:    the notification functions are used internally by WEB modules to notify
  5984.       other modules and external programs of actions or event, and should
  5985.       never be called by an application
  5986. SeeAlso: AX=EE00h"WEB"
  5987.  
  5988. (Table 2380)
  5989. Values for WEB Notification Function ID:
  5990.  00h    node added
  5991.  01h    node deleted
  5992.  02h    dial attempt
  5993.  03h    dial failed
  5994.  04h    file close
  5995.  05h    close connection
  5996.  07h    check Windows mode
  5997.  20h    link up
  5998.  21h    link down
  5999. --------K-2FF000-----------------------------
  6000. INT 2F U - 4MAP - INSTALLATION CHECK
  6001.     AX = F000h
  6002. Return: AX = 00FFh
  6003. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6004. Note:    returns AX=00FFh for any value of AL not listed here
  6005. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  6006. --------K-2FF001-----------------------------
  6007. INT 2F U - 4MAP - GET KEY MAPPINGS
  6008.     AX = F001h
  6009. Return: ES:BX -> key mappings
  6010. SeeAlso: AX=F000h
  6011. --------K-2FF002-----------------------------
  6012. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6013.     AX = F002h
  6014.     BL = character to insert
  6015. Return: AX = status
  6016.         0000h successful
  6017.         0001h buffer full
  6018. SeeAlso: AX=F000h,AX=F003h
  6019. --------K-2FF003-----------------------------
  6020. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6021.     AX = F003h
  6022.     BL = character to insert
  6023. Return: AX = status
  6024.         0000h successful
  6025.         0001h buffer full
  6026. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6027. SeeAlso: AX=F000h,AX=F002h
  6028. --------m-2FF1-------------------------------
  6029. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  6030.     AH = F1h
  6031.     AL <> F1h
  6032. Return: AL = F1h if installed
  6033. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  6034.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  6035.       TSR at a time is brought back into memory at the user's request.
  6036. --------E-2FF100-----------------------------
  6037. INT 2F - DOS EXTENDER INSTALLATION CHECK
  6038.     AX = F100h
  6039. Return: AL = FFh if DOS extender present
  6040.         SI = 444Fh ("DO")
  6041.         DI = 5358h ("SX")
  6042. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  6043. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6044. --------W-2FF200-----------------------------
  6045. INT 2F - WINX - INSTALLATION CHECK
  6046.     AX = F200h
  6047. Return: AX = 00FFh if installed
  6048. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  6049.       launch Windows applications from a DOS Box; it was published in
  6050.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  6051.       (Addison-Wesley) and should not be confused with the Windows driver
  6052.       of the same name which is part of the DESQview/X package
  6053. --------W-2FF201-----------------------------
  6054. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  6055.     AX = F201h
  6056. Return: AX = status
  6057.         FFFFh if WINX is busy processing a different request
  6058.         0000h if successful
  6059.         BX:CX = address of server buffer (see #2381)
  6060.  
  6061. Format of WINX server buffer:
  6062. Offset    Size    Description    (Table 2381)
  6063.  00h    BYTE    command/status
  6064.         00h buffer available
  6065.         01h buffer contains result
  6066.         02h change directory
  6067.         03h execute program
  6068.         FFh terminate windows portion of WINX
  6069.  01h  ? BYTEs    command (03h) or directory (02h)
  6070.   or
  6071.  01h    DWORD    result (01h)
  6072. --------W-2FF202-----------------------------
  6073. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  6074.     AX = F202h
  6075.     BX:CX -> directory
  6076. Return: AX = status
  6077.         FFFFh if WINX is busy processing a different request
  6078.         0000h if successful
  6079. SeeAlso: AX=F200h,AX=F203h
  6080. --------W-2FF203-----------------------------
  6081. INT 2F - WINX - EXECUTE COMMAND
  6082.     AX = F203h
  6083.     BX:CX -> command
  6084. Return: AX = status
  6085.         0000h if successful
  6086.         FFFFh if WINX is busy processing a different request
  6087. SeeAlso: AX=F200h,AX=F202h
  6088. --------G-2FF400-----------------------------
  6089. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  6090.     AX = F400h
  6091. Return: AL = 01h if installed
  6092. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  6093.       of PC Magazine; when run as a TSR it can determine which IRQs are
  6094.       used only when a device is active
  6095. SeeAlso: AX=F401h
  6096. --------N-2FF400-----------------------------
  6097. INT 2F - PowerLAN - INSTALLATION CHECK???
  6098.     AX = F400h
  6099.     ???
  6100. Return: ???
  6101. Note:    this function is called by PowerLAN's NET.EXE just prior to calling
  6102.       AX=F401h (get version)
  6103. SeeAlso: AX=F401h"PowerLAN"
  6104. --------N-2FF401-----------------------------
  6105. INT 2F - PowerLAN - GET VERSION
  6106.     AX = F401h
  6107. Return: ES:BX -> WORD containing 100*version (in decimal)
  6108. Program: PowerLAN is a networking product by Performance Technology
  6109. SeeAlso: AX=F400h"PowerLAN",AX=F483h"PowerLAN"
  6110. --------G-2FF401CX5121-----------------------
  6111. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  6112.     AX = F401h
  6113.     CX = 5121h ('Q!')
  6114. Return: AX:DX -> hooked interrupt table (see #2382)
  6115. SeeAlso: AX=F400h
  6116.  
  6117. Format of FINDIRQ hooked interrupt table:
  6118. Offset    Size    Description    (Table 2382)
  6119.  00h    BYTE    1Ch
  6120.  01h    DWORD    FINDIRQ's INT 1C handler
  6121.  05h    DWORD    original INT 1C handler
  6122.  09h    BYTE    28h
  6123.  0Ah    DWORD    FINDIRQ's INT 28 handler
  6124.  0Eh    DWORD    original INT 28 handler
  6125.  12h    BYTE    2Fh
  6126.  13h    DWORD    FINDIRQ's INT 2F handler
  6127.  17h    DWORD    original INT 2F handler
  6128. --------N-2FF483-----------------------------
  6129. INT 2F - PowerLAN - ???
  6130.     AX = F483h
  6131.     ???
  6132. Return: ???
  6133. SeeAlso: AX=F400h"PowerLAN",AX=F401h"PowerLAN"
  6134. --------d-2FF700-----------------------------
  6135. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  6136.     AX = F700h
  6137. Return: AL = state
  6138.         00h not installed
  6139.         FFh installed
  6140. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  6141. --------d-2FF701-----------------------------
  6142. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  6143.     AX = F701h
  6144.     BX:CX = 32-bit count of 55ms timer ticks
  6145. --------d-2FF800CX4455-----------------------
  6146. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  6147.     AX = F800h
  6148.     CX = 4455h ("DU")
  6149.     DL = 45h ("E")
  6150. Return: AL = FFh if installed
  6151.         ES:BX -> ASCII signature "Universal Data Exchange"
  6152. Program: SuperStor is a disk-compression program by Addstor.
  6153. Note:    returns AX=0001h if AL is not 00h or 01h
  6154. SeeAlso: AX=1001h,AX=F801h
  6155. --------d-2FF801CX4455-----------------------
  6156. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  6157.     AX = F801h
  6158.     CX = 4455h ("DU")
  6159.     DL = 45h ("E")
  6160.     ES:BX = return address if successful
  6161. Return: at specified address if successfully removed from memory
  6162.     else
  6163.         AL = error code
  6164.         ???
  6165. Program: SuperStor is a disk-compression program by Addstor.
  6166. Note:    returns AX=0001h if AL is not 00h or 01h
  6167. SeeAlso: AX=1001h,AX=F800h
  6168. ----------2FFA00-----------------------------
  6169. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  6170.     AX = FA00h
  6171.     BX = ??? (0408h)
  6172.     CX = ??? (001Fh)
  6173.     DX = ??? (0102h)
  6174.     SI = ??? (5ACCh)
  6175.     DI = ??? (0632h)
  6176. Return: ???
  6177. Note:    called by WinEmacs at startup
  6178. ----------2FFA00-----------------------------
  6179. INT 2F - Multiplex - ??? - INSTALLATION CHECK???
  6180.     AX = FA00h
  6181.     BX = ??? (03FCh)
  6182.     CX = ??? (003Fh)
  6183.     DX = ??? (00FFh)
  6184.     SI = ??? (5AA6h)
  6185.     DI = ??? (0620h)
  6186. Return: ???
  6187. Note:    called by Matlab at startup
  6188. --------*-2FFB-------------------------------
  6189. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  6190.     AH = FBh
  6191. SeeAlso: AX=FB42h/BX=0001h
  6192. --------f-2FFB-------------------------------
  6193. INT 2F U - Conner Backup Exec AUTORES - API
  6194.     AH = FBh
  6195.     BL = function number (00h-07h)
  6196.     ???
  6197. Return: ???
  6198. Program: AUTORES is a resident program launcher for unattended backups
  6199. --------a-2FFB00-----------------------------
  6200. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  6201.     AX = FB00h
  6202. Return: AX = 00FFh if installed
  6203. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6204. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  6205. --------U-2FFB00-----------------------------
  6206. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  6207.     AX = FB00h
  6208. Return: AX = FFFFh if installed
  6209.         BX = version (BCD, BH=major, BL=minor)
  6210. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  6211. --------a-2FFB01-----------------------------
  6212. INT 2F U - AutoBraille v1.1A - ???
  6213.     AX = FB01h
  6214.     ???
  6215. Return: ???
  6216. --------U-2FFB01-----------------------------
  6217. INT 2F U - Jot-It! v1.50 - GET USER NAME
  6218.     AX = FB01h
  6219. Return: DX:BX -> ASCIZ user name
  6220. SeeAlso: AX=FB02h"Jot-It"
  6221. --------a-2FFB02-----------------------------
  6222. INT 2F U - AutoBraille v1.1A - ???
  6223.     AX = FB02h
  6224. Return: AH = ???
  6225.     AL = ???
  6226. --------U-2FFB02-----------------------------
  6227. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  6228.     AX = FB02h
  6229. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  6230. SeeAlso: AX=FB01h"Jot-It"
  6231. --------a-2FFB03-----------------------------
  6232. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  6233.     AX = FB03h
  6234. Return: AX = ???
  6235. --------U-2FFB03-----------------------------
  6236. INT 2F U - Jot-It! v1.50 - UNINSTALL
  6237.     AX = FB03h
  6238. Return: resident code removed from memory
  6239. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  6240.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  6241. SeeAlso: AX=FB00h"Jot-It"
  6242. --------a-2FFB-------------------------------
  6243. INT 2F U - AutoBraille v1.1A - SET ???
  6244.     AH = FBh
  6245.     AL = 04h-08h
  6246. Return: AX = 0000h
  6247. --------a-2FFB-------------------------------
  6248. INT 2F U - AutoBraille v1.1A - SET ???
  6249.     AH = FBh
  6250.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  6251. Return: ???
  6252. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6253. --------a-2FFB-------------------------------
  6254. INT 2F U - AutoBraille v1.1A - SET ???
  6255.     AH = FBh
  6256.     AL = 10h-1Fh
  6257.     ???
  6258. Return: ???
  6259. --------a-2FFB20-----------------------------
  6260. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  6261.     AX = FB20h
  6262.     BL = flags to set
  6263. SeeAlso: AX=FB21h"AutoBraille"
  6264. --------a-2FFB21-----------------------------
  6265. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  6266.     AX = FB21h
  6267.     BL = flags to clear
  6268. SeeAlso: AX=FB20h"AutoBraille"
  6269. --------a-2FFB22-----------------------------
  6270. INT 2F U - AutoBraille v1.1A - SET ???
  6271.     AX = FB22h
  6272.     BL = ???
  6273. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6274. --------a-2FFB28-----------------------------
  6275. INT 2F U - AutoBraille v1.1A - ???
  6276.     AX = FB28h
  6277.     BX = ???
  6278.     ???
  6279. Return: ???
  6280. SeeAlso: AX=FB29h"AutoBraille"
  6281. --------a-2FFB29-----------------------------
  6282. INT 2F U - AutoBraille v1.1A - ???
  6283.     AX = FB29h
  6284.     BX = ???
  6285.     ???
  6286. Return: ???
  6287. SeeAlso: AX=FB28h"AutoBraille"
  6288. --------a-2FFB-------------------------------
  6289. INT 2F U - AutoBraille v1.1A - SET ???
  6290.     AH = FBh
  6291.     AL = 2Bh-34h
  6292.     BX = ???
  6293. --------a-2FFB35-----------------------------
  6294. INT 2F U - AutoBraille v1.1A - SET ???
  6295.     AX = FB35h
  6296.     BL = ???
  6297. --------a-2FFB36-----------------------------
  6298. INT 2F U - AutoBraille v1.1A - SET ???
  6299.     AX = FB36h
  6300.     BL = ???
  6301. --------a-2FFB37-----------------------------
  6302. INT 2F U - AutoBraille v1.1A - SET ???
  6303.     AX = FB37h
  6304.     BL = ???
  6305. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6306. --------E-2FFB42BX0001-----------------------
  6307. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  6308.     AX = FB42h
  6309.     BX = 0001h
  6310. Return: AX = version number??? (AL=major, AH=minor)
  6311.     CX = next-selector increment
  6312. ---BC2.0---
  6313.     ES:BX -> 80-byte buffer for ???
  6314.     DX = DPMI version
  6315. ---BC3.0---
  6316.     BX = ??? (0000h)
  6317.     DX = ???
  6318.     ES:SI -> list of valid selectors ???
  6319. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6320.       as version 1.000, while the version distributed with BC++ 3.0
  6321.       identifies itself as version 1.0; the former is 10864 bytes, the
  6322.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  6323.       the BC3.0 version also adds a DPMI host and DOS extender
  6324.     the BC++ 2.0 version displays an error message if called with BX
  6325.       values other than 0001h-0008h
  6326. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  6327. --------E-2FFB42BX0002-----------------------
  6328. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6329.     AX = FB42h
  6330.     BX = 0002h
  6331.     CX = size in bytes
  6332.     DX = bit flags
  6333.         bit 2: set to allocate DOS memory, clear for DPMI memory
  6334.     SI = selector of descriptor to be modified to access allocated memory
  6335.     DI = selector of a second descriptor to be modified
  6336. Return: AX = ??? or 0000h on error
  6337.     CX:DX = linear base address of DPMI memory block
  6338.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  6339.     ???
  6340. Note:    two segment descriptors may be set if a code and an aliased data
  6341.       segment are required; if only one descriptor is needed, SI should
  6342.       equal DI on entry
  6343. BUG:    when allocating DOS memory, the code computes the linear address by
  6344.       multiplying the segment number by 4 rather than shifting by 4
  6345. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6346. --------E-2FFB42BX0002-----------------------
  6347. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6348.     AX = FB42h
  6349.     BX = 0002h
  6350.     ES:SI -> memory block info (see #2383)
  6351. Return: ???
  6352. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6353.       as version 1.000, while the version distributed with BC++ 3.0
  6354.       identifies itself as version 1.0; the former is 10864 bytes, the
  6355.       latter 22180 bytes.
  6356. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6357.  
  6358. Format of DPMILOAD memory block info:
  6359. Offset    Size    Description    (Table 2383)
  6360.  00h    WORD    flags (see #2384)
  6361.  02h    DWORD    block size in bytes
  6362. ---DPMI memory block---
  6363.  06h    DWORD    DPMI memory block handle
  6364. ---DOS memory block---
  6365.  06h    WORD    real-mode segment of memory block
  6366.  08h    WORD    selector of memory block
  6367. ---
  6368.  0Ah    DWORD    linear address of memory
  6369.  0Eh    WORD    memory operation error code
  6370.         0008h no more free LDT descriptors
  6371. ---if flags bit 0 clear---
  6372.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  6373.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  6374. ---if flags bit 0 set---
  6375.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  6376.  12h    WORD    unused???
  6377.  
  6378. Bitfields for DPMILOAD memory block flags:
  6379. Bit(s)    Description    (Table 2384)
  6380.  0    set if data segment rather than code segment
  6381.  1    information valid
  6382.  2    set if DOS memory block rather than DPMI memory block
  6383.  4    ???
  6384.  15    set if no LDT selectors for memory block???
  6385. SeeAlso: #2383
  6386. --------E-2FFB42BX0003-----------------------
  6387. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  6388.     AX = FB42h
  6389.     BX = 0003h
  6390. Return: DX:AX = size of largest free block in paragraphs
  6391.         0000h:0000h on error (BC3.0 version only)
  6392. Note:    AX and DX are destroyed on error, but no other error indicator is
  6393.       returned, under the BC++ 2.0 version of DPMILOAD
  6394. SeeAlso: AX=FB42h/BX=0002h
  6395. --------E-2FFB42BX0004-----------------------
  6396. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  6397.     AX = FB42h
  6398.     BX = 0004h
  6399.     DS:DX -> ASCIZ filename of protected-mode executable
  6400. Return: CX = selector of ??? or 0000h
  6401. ---BC3.0---
  6402.     DX = status (0000h,FFF4h,others???) (see #2385)
  6403. Note:    the filename may also be terminated by a CR rather than a NUL under the
  6404.       BC++ 3.0 version of DPMILOAD
  6405.  
  6406. (Table 2385)
  6407. Values for DPMILOAD function status:
  6408.  0000h    successful
  6409.  0001h    ??? failure
  6410.  0002h    invalid selector
  6411.  0004h    unknown error
  6412.  0008h    no more LDT descriptors available???
  6413.  FFDEh    unable to set descriptor
  6414.  FFDFh    unable to get segment base address
  6415.  FFE0h    ???
  6416.  FFF2h    invalid parameter value
  6417.  FFF4h    component of filename too long (name not in 8.3 format)
  6418.  FFF5h    pathname too long (>79 chars)
  6419.  FFF6h    ???
  6420.  FFF8h    ???
  6421.  FFF9h    index out of range
  6422.  FFFAh    ???
  6423.  FFFCh    invalid access to code segment???
  6424.  FFFEh    ???
  6425.  FFFFh    general error
  6426. --------E-2FFB42BX0005-----------------------
  6427. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  6428.     AX = FB42h
  6429.     BX = 0005h
  6430.     CX = selector of DPMILOAD data (see #2386)
  6431.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  6432. Return: DX = status (see #2385)
  6433.         0000h successful
  6434.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6435.         else
  6436.         BX destroyed
  6437. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  6438.  
  6439. Format of DPMILOAD data:
  6440. Offset    Size    Description    (Table 2386)
  6441.  00h 12 BYTEs    ???
  6442.  0Ch    WORD    ??? bit flags
  6443.  0Eh 14 BYTEs    ???
  6444.  1Ch    WORD    number of memory control records (see #2389)
  6445.  1Eh 25 BYTEs    ???
  6446.  37h    BYTE    ??? bit flags
  6447.         bit 4: data valid???
  6448.  38h  4 BYTEs    ???
  6449.  3Ch    WORD    ???
  6450.  3Eh 12 BYTEs    ???
  6451.  46h    BYTE    ??? counter
  6452.  47h    BYTE    ???
  6453.  48h    BYTE    ???
  6454.  49h    BYTE    ???
  6455.  4Ah    WORD    ???
  6456.  4Ch  2 BYTEs    ???
  6457.  4Eh    WORD    offset of array of 64-byte memory control records
  6458.  52h    WORD    offset of name list (see #2387)
  6459.  54h  4 BYTEs    ???
  6460.  58h    WORD    offset of array of 6-byte objects (see #2388)
  6461.  5Ah  8 BYTEs    ???
  6462.  62h  9 BYTEs    ASCIZ name for ???
  6463.  6Bh  9 BYTEs    ASCIZ name for ???
  6464.     ???
  6465.  
  6466. Format of name list entry [array]:
  6467. Offset    Size    Description    (Table 2387)
  6468.  00h    BYTE    length of name (00h if end of array)
  6469.  01h  N BYTEs    name
  6470.  N+1    WORD    1-based index into array of unknown 6-byte objects
  6471.  
  6472. Format of 6-byte objects:
  6473. Offset    Size    Description    (Table 2388)
  6474.  00h    BYTE    ???
  6475.  01h    BYTE    ???
  6476.  02h    BYTE    ???
  6477.  03h    BYTE    1-based index of memory control record
  6478.  04h    WORD    ???
  6479.  
  6480. Format of memory control record:
  6481. Offset    Size    Description    (Table 2389)
  6482.  00h 20 BYTEs    memory block info (see #2383)
  6483.  14h  6 BYTEs    ???
  6484.  1Ah    BYTE    ???
  6485.  1Bh  2 BYTEs    ???
  6486.  1Dh    BYTE    ??? bit flags
  6487.  1Eh 14 BYTEs    ???
  6488.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  6489.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  6490.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  6491.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  6492.  3Ch  4 BYTEs    ???
  6493. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  6494.       the pointers at offsets 34h and 38h
  6495. --------E-2FFB42BX0006-----------------------
  6496. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  6497.     AX = FB42h
  6498.     BX = 0006h
  6499.     CX = selector of DPMILOAD data (see #2386)
  6500.     DX = 1-based index into array of ??? 6-byte objects
  6501. Return: DX = status (see #2385)
  6502.         0000h successful
  6503.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6504.         else
  6505.         BX destroyed
  6506. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  6507. --------E-2FFB42BX0007-----------------------
  6508. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  6509.     AX = FB42h
  6510.     BX = 0007h
  6511.     CX = selector of ???
  6512. Return: ???
  6513. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6514.       as version 1.000, while the version distributed with BC++ 3.0
  6515.       identifies itself as version 1.0; the former is 10864 bytes, the
  6516.       latter 22180 bytes.
  6517. --------E-2FFB42BX0007-----------------------
  6518. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6519.     AX = FB42h
  6520.     BX = 0007h
  6521.     CX = selector of DPMILOAD data (see #2386)
  6522.     ???
  6523. Return: DX = status (see #2385)
  6524.         0000h successful
  6525.         AX = ???
  6526. --------E-2FFB42BX0008-----------------------
  6527. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6528.     AX = FB42h
  6529.     BX = 0008h
  6530.     CX = bit flags
  6531.         bit 2: set if DPMI memory, clear if DOS memory
  6532.     DX = selector of DOS memory block
  6533.     SI:DI = handle of DPMI memory block
  6534. Return: DX = 0000h on error, unchanged if succcessful
  6535. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6536.       as version 1.000, while the version distributed with BC++ 3.0
  6537.       identifies itself as version 1.0; the former is 10864 bytes, the
  6538.       latter 22180 bytes.
  6539. SeeAlso: AX=FB42h/BX=0002h
  6540. --------E-2FFB42BX0008-----------------------
  6541. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6542.     AX = FB42h
  6543.     BX = 0008h
  6544.     ES:SI -> memory block info (see #2383)
  6545. Return: ???
  6546. SeeAlso: AX=FB42h/BX=0009h
  6547. --------E-2FFB42BX0009-----------------------
  6548. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  6549.     AX = FB42h
  6550.     BX = 0009h
  6551.     ES:SI -> memory block info (see #2383)
  6552.     ???
  6553. Return: ???
  6554. SeeAlso: AX=FB42h/BX=0008h"3.0"
  6555. --------E-2FFB42BX000A-----------------------
  6556. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  6557.     AX = FB42h
  6558.     BX = 000Ah
  6559.     CX = 0001h
  6560.     DX = ???
  6561.     SI = ???
  6562. Return: after user exits subshell
  6563. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  6564.       function is not available in protected mode.
  6565.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  6566.       version also adds a DPMI host and DOS extender.
  6567. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  6568. --------E-2FFB42BX000B-----------------------
  6569. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  6570.     AX = FB42h
  6571.     BX = 000Bh
  6572. --------E-2FFB42BX000C-----------------------
  6573. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  6574.     AX = FB42h
  6575.     BX = 000Ch
  6576.     ES:SI -> memory block info ??? (see #2383)
  6577. Return: DX = status???
  6578. SeeAlso: AX=FB42h/BX=000Fh
  6579. --------E-2FFB42BX000D-----------------------
  6580. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  6581.     AX = FB42h
  6582.     BX = 000Dh
  6583.     CX = number of words to copy from protected-mode to real mode stack
  6584.     DL = interrupt number
  6585.     DH = flags
  6586.         bit 0: reset the interrupt controller and A20 line
  6587.     ES:DI -> real-mode call structure (see #2403 at INT 31/AX=0300h)
  6588. Return: CX = status
  6589.         0000h successful
  6590.         0001h failed
  6591. SeeAlso: INT 31/AX=0300h
  6592. --------E-2FFB42BX000E-----------------------
  6593. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6594.     AX = FB42h
  6595.     BX = 000Eh
  6596.     DS:DX -> ASCIZ or CR-terminated name of ???
  6597. Return: CX = selector of DPMILOAD data (see #2386) corresponding to name,
  6598.           0000h on error
  6599. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  6600. --------E-2FFB42BX000F-----------------------
  6601. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  6602.     AX = FB42h
  6603.     BX = 000Fh
  6604.     ES:SI -> memory block info (see #2383)
  6605. Return: ???
  6606. SeeAlso: AX=FB42h/BX=000Ch
  6607. --------E-2FFB42BX0010-----------------------
  6608. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  6609.     AX = FB42h
  6610.     BX = 0010h
  6611.     DX = segment number
  6612. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  6613.         0000h successful
  6614.         DX = selector number for descriptor
  6615.         0008h failed
  6616. SeeAlso: AX=FB42h/BX=0023h
  6617. --------E-2FFB42BX0011-----------------------
  6618. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6619.     AX = FB42h
  6620.     BX = 0011h
  6621.     CX = selector of DPMILOAD data (see #2386)
  6622.     ???
  6623. Return: DX = status (0000h,0002h,FFFEh) (see also #2385)
  6624.         0000h successful
  6625.         AX:BX -> ??? name
  6626.         FFFEh ??? error
  6627. --------E-2FFB42BX0012-----------------------
  6628. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6629.     AX = FB42h
  6630.     BX = 0012h
  6631.     CX = selector for ???
  6632. Return: CX = selector for ???
  6633. --------E-2FFB42BX0013-----------------------
  6634. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6635.     AX = FB42h
  6636.     BX = 0013h
  6637.     CX = selector of DPMILOAD data (see #2386)
  6638.     DX = 1-based index of ???
  6639. Return: CX = status (0000h,0002h,FFF9h) (see also #2385)
  6640.         0000h successful
  6641.         BX = ??? or 0000h
  6642.         FFF9h ??? error
  6643. --------E-2FFB42BX0014-----------------------
  6644. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  6645.     AX = FB42h
  6646.     BX = 0014h
  6647.     CX = 0001h
  6648. Return: BX = 0000h if installed
  6649. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6650.       real or V86 mode
  6651. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  6652. --------E-2FFB42BX0015-----------------------
  6653. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  6654.     AX = FB42h
  6655.     BX = 0015h
  6656.     CX = 0001h
  6657. Return: ???
  6658. Note:    unlike most of the DPMILOAD functions, this call is available only in
  6659.       real or V86 mode
  6660. SeeAlso: AX=FB42h/BX=000Ah
  6661. --------E-2FFB42BX0016-----------------------
  6662. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6663.     AX = FB42h
  6664.     BX = 0016h
  6665.     CX = selector of DPMILOAD data (see #2386)
  6666. Return: DX = status (see also AX=FB42h/BX=0004h)
  6667.         0000h successful
  6668.         CX = ???
  6669. --------E-2FFB42BX0017-----------------------
  6670. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6671.     AX = FB42h
  6672.     BX = 0017h
  6673.     CX = ???
  6674.     DX = ???
  6675.     ???
  6676. Return: DX = status (0000h,0001h) (see #2385)
  6677. --------E-2FFB42BX0018-----------------------
  6678. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  6679.     AX = FB42h
  6680.     BX = 0018h
  6681.     CX = ???
  6682. --------E-2FFB42BX0019-----------------------
  6683. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6684.     AX = FB42h
  6685.     BX = 0019h
  6686.     CX = selector for ???
  6687.     ???
  6688. Return: DX = status (see also AX=FB42h/BX=0004h)
  6689.         0000h successful
  6690.         CX = selector for ???
  6691. --------E-2FFB42BX001A-----------------------
  6692. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6693.     AX = FB42h
  6694.     BX = 001Ah
  6695.     CX = selector for ???
  6696.     ???
  6697. Return: DX = status (see also AX=FB42h/BX=0004h)
  6698.         0000h successful
  6699.         0004h failed
  6700.     CX:BX -> ???
  6701. --------E-2FFB42BX001B-----------------------
  6702. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6703.     AX = FB42h
  6704.     BX = 001Bh
  6705.     CX = selector of DPMILOAD data (see #2386)
  6706.     DX = offset of ???
  6707. Return: DX = status (0000h,0002h) (see also #2385)
  6708.         0000h successful
  6709.         BX = selector for ???
  6710.         CX = selector for ???
  6711. --------E-2FFB42BX001C-----------------------
  6712. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6713.     AX = FB42h
  6714.     BX = 001Ch
  6715.     ES = selector for DPMILOAD data (see #2386)
  6716.     CX = 1-based index of ???
  6717.     DX = 1-based index of ???
  6718. Return: DX = status (0000h,0002h,FFF9h) (see #2385)
  6719. --------E-2FFB42BX001D-----------------------
  6720. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6721.     AX = FB42h
  6722.     BX = 001Dh
  6723. Return: CX:DX = ???
  6724. --------E-2FFB42BX001E-----------------------
  6725. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6726.     AX = FB42h
  6727.     BX = 001Eh
  6728.     CX = ???
  6729.     ???
  6730. Return: DX = status (see also AX=FB42h/BX=0004h)
  6731.         0000h successful
  6732.         FFF7h ??? error
  6733.     CX:BX -> ???
  6734. --------E-2FFB42BX001F-----------------------
  6735. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  6736.     AX = FB42h
  6737.     BX = 001Fh
  6738.     DS:DX -> 8-character name of ???
  6739.     ???
  6740. Return: CX = selector of DPMILOAD data (see #2386) for ???
  6741.         0000h on error
  6742. SeeAlso: AX=FB42h/BX=000Eh
  6743. --------E-2FFB42BX0020-----------------------
  6744. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  6745.     AX = FB42h
  6746.     BX = 0020h
  6747. Return: DX = ??? (always 0000h)
  6748. --------E-2FFB42BX0021-----------------------
  6749. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  6750.     AX = FB42h
  6751.     BX = 0021h
  6752.     CL = exception number (00h-1Fh)
  6753. Return: DX = status (see also AX=FB42h/BX=0004h)
  6754.         0000h successful
  6755.         AX:BX = selector:offset of handler
  6756.         FFF2h unable to get exception handler vector
  6757. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  6758. --------E-2FFB42BX0022-----------------------
  6759. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  6760.     AX = FB42h
  6761.     BX = 0022h
  6762.     CL = exception number (00h-1Fh)
  6763.     SI:DX = selector:offset of new handler
  6764. Return: DX = status (0000h,0004h,FFF2h) (see #2385)
  6765. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  6766. --------E-2FFB42BX0023-----------------------
  6767. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  6768.     AX = FB42h
  6769.     BX = 0023h
  6770.     CX = selector
  6771. Return: DX = status (see also AX=FB42h/BX=0004h)
  6772.         0000h successful
  6773.         CX = real-mode segment number
  6774.         FFF2h descriptor has invalid base address for real-mode segment
  6775. SeeAlso: AX=FB42h/BX=0010h
  6776. --------E-2FFB42BX0024-----------------------
  6777. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  6778.     AX = FB42h
  6779.     BX = 0024h
  6780.     CL = interrupt number
  6781. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  6782.     AX:BX = selector:offset of handler
  6783. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  6784. --------E-2FFB42BX0025-----------------------
  6785. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  6786.     AX = FB42h
  6787.     BX = 0025h
  6788.     CL = interrupt number
  6789.     SI:DX = selector:offset of new handler
  6790. Return: DX = status (0000h,0004h,FFF2h) (see #2385)
  6791. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  6792. --------E-2FFB42BX0026-----------------------
  6793. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6794.     AX = FB42h
  6795.     BX = 0026h
  6796.     CX = selector of DPMILOAD data (see #2386)
  6797.     DX = 1-based index of ???
  6798.     ???
  6799. Return: DX = status (0000h,0002h,FFF9h) (see #2385)
  6800.         0000h successful
  6801.         BX = offset of ??? within data structure
  6802. --------E-2FFB42BX0027-----------------------
  6803. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  6804.     AX = FB42h
  6805.     BX = 0027h
  6806.     CX = selector of DPMILOAD data (see #2386)
  6807.     DX = offset of ???
  6808. Return: DX = status (see also AX=FB42h/BX=0004h)
  6809.         0000h successful
  6810.         BX = ???
  6811. --------E-2FFB42BX0080-----------------------
  6812. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6813.     AX = FB42h
  6814.     BX = 0080h
  6815.     ???
  6816. Return: AX = ???
  6817.     ???
  6818. --------E-2FFB42BX0081-----------------------
  6819. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  6820.     AX = FB42h
  6821.     BX = 0081h
  6822.     ???
  6823. Return: AX = ???
  6824.     ???
  6825. --------E-2FFB42BX1001-----------------------
  6826. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  6827.     AX = FB42h
  6828.     BX = 1001h
  6829. Return: BX = 0000h
  6830. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  6831. --------E-2FFB42BX1002-----------------------
  6832. INT 2F U - Borland RTM.EXE 1.0 - ???
  6833.     AX = FB42h
  6834.     BX = 1002h
  6835.     ???
  6836. Return: ???
  6837. SeeAlso: AX=FB42h/BX=1001h
  6838. --------E-2FFB42BX1003-----------------------
  6839. INT 2F U - Borland RTM.EXE 1.0 - ???
  6840.     AX = FB42h
  6841.     BX = 1003h
  6842.     ???
  6843. Return: ???
  6844. SeeAlso: AX=FB42h/BX=1001h
  6845. --------E-2FFB43-----------------------------
  6846. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  6847.     AX = FB43h
  6848.     BX = subfunction (at least 0000h-000Eh)
  6849. Notes:    this function is only present in protected mode; it does nothing but
  6850.       an immediate IRET
  6851.     DPMILOAD.EXE itself calls various subfunctions:
  6852.         subfunction 0004h is called with CX=selector of ???, DI=selector
  6853.           of DPMILOAD data
  6854.         subfunction 0008h is called with CX=selector of DPMILOAD data
  6855. SeeAlso: AX=FB42h/BX=0001h
  6856. --------G-2FFB43BX0100-----------------------
  6857. INT 2F PU - Borland TDX - INSTALLATION CHECK
  6858.     AX = FB43h
  6859.     BX = 0100h
  6860. Return: BX = FB43h if loaded
  6861. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  6862. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  6863.       should install their own stack and general protection exception
  6864.       handlers, or allow TDX to handle those exceptions
  6865. --------a-2FFB64-----------------------------
  6866. INT 2F U - AutoBraille v1.1A - GET ???
  6867.     AX = FB64h
  6868. Return: AX = ??? (0006h seen)
  6869. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6870. --------E-2FFBA1BX0081-----------------------
  6871. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  6872.     AX = FBA1h
  6873.     BX = 0081h
  6874.     ES:DI -> 16-byte buffer
  6875. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  6876. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  6877. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  6878.       extender was moved into DPMILOAD.
  6879. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  6880. SeeAlso: INT 21/AX=4403h"AI Architects"
  6881. --------E-2FFBA1BX0082-----------------------
  6882. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  6883.     AX = FBA1h
  6884.     BX = 0082h
  6885.     ES:DI -> response buffer (see #2390)
  6886. Return: ES:DI buffer filled
  6887. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  6888.  
  6889. Format of TKERNEL response buffer:
  6890. Offset    Size    Description    (Table 2390)
  6891.  00h  4 BYTEs    signature "IABH"
  6892.  04h    DWORD    pointer to FAR extender entry point (see #2391)
  6893.  
  6894. (Table 2391)
  6895. Call TKERNEL entry point with:
  6896.     AX = function number
  6897.         0000h initialize???
  6898.         STACK:    WORD  ???
  6899.         Return: AX = status???
  6900.             STACK unchanged
  6901.         0001h get version???
  6902.         Return: AX = 0200h for v2.0.34
  6903.         0002h get ???
  6904.         Return: AX = ??? (011Eh or 0182h seen)
  6905.         0003h load protected-mode executable
  6906.         STACK:    DWORD -> ASCIZ filename of executable
  6907.             DWORD    ???
  6908.             DWORD -> program arguments (counted string plus CR)
  6909.             DWORD -> environment for protected-mode executable
  6910.                 (terminated with two consecutive NULs)
  6911.             DWORD -> WORD buffer for ???
  6912.         Return: AX = status???
  6913.             STACK unchanged
  6914.         0004h get descriptor
  6915.         STACK:    WORD    selector for which to get descriptor
  6916.             WORD    segment number (when running in real mode)
  6917.             DWORD -> buffer for descriptor
  6918.         Return: CF clear if successful
  6919.                 buffer filled
  6920.             CF set on error
  6921.                 AX destroyed???
  6922.             STACK unchanged
  6923.         0005h ???
  6924.         STACK:    WORD    selector for ???
  6925.             WORD    subfunction number???
  6926.                 0000h run previously-loaded program???
  6927.                 0001h ??? (similar to 0000h)
  6928.                 0002h
  6929.                 0003h
  6930.                 0005h ??? (similar to 0000h and 0001h)
  6931.         Return: AX = status???
  6932.             STACK unchanged
  6933.         0006h ???
  6934.         STACK:    WORD ???
  6935.             DWORD -> WORD (call) max iterations of ???
  6936.                       (ret) remaining iterations
  6937.         Return: AX = ???
  6938.             STACK unchanged
  6939.         0007h unused
  6940.         Return: AX = 0001h
  6941.         0008h unused
  6942.         Return: AX = 0001h
  6943.         0009h copy protected-mode memory into conventional memory
  6944.         STACK:    WORD    selector for source segment
  6945.             WORD    segment of source if in real mode???
  6946.             DWORD    offset of source
  6947.             WORD    number of bytes to copy
  6948.             DWORD -> low-memory destination
  6949.         Return: AX = status
  6950.             STACK unchanged
  6951.         000Ah copy conventional memory into protected-mode memory
  6952.         STACK:    WORD    selector for destination segment
  6953.             WORD    segment of destination if in real mode???
  6954.             DWORD    offset of destination
  6955.             WORD    number of bytes to copy
  6956.             DWORD -> low-memory source
  6957.         Return: AX = status
  6958.             STACK unchanged
  6959.         000Bh get ??? pointers
  6960.         STACK:    WORD desired pointer
  6961.                 0000h get ???
  6962.                 0002h get protected-mode CR3
  6963.                 0003h get 4K page table buffer pointer
  6964.                 else Return: DX:AX = FFFFh:FFFFh
  6965.         Return: DX:AX = requested pointer
  6966.             STACK unchanged
  6967.         000Ch set ??? pointers
  6968.         STACK:    WORD desired pointer
  6969.                 0000h set ???
  6970.                 0002h set protected-mode CR3
  6971.                 0003h set 4K page table buffer pointer
  6972.                 else ignore
  6973.             DWORD new value for pointer
  6974.         Return: STACK unchanged
  6975.         000Dh get ??? pointers
  6976.         STACK:    WORD desired pointer
  6977.                 0000h get ???
  6978.                 0001h get ???
  6979.                 0002h get ???
  6980.                 0003h get ???
  6981.                 0004h get ???
  6982.                 0005h get ???
  6983.                 0006h get ???
  6984.                 0007h get ???
  6985.                 else Return: DX:AX = FFFFh:FFFFh
  6986.         Return: DX:AX = desired pointer
  6987.             STACK unchanged
  6988.         000Eh set ??? pointer
  6989.         STACK:    WORD desired pointer
  6990.                 0000h set ???
  6991.                 0001h set ???
  6992.                 0002h set ???
  6993.                 0003h set ???
  6994.                 0004h set ???
  6995.                 0005h set ???
  6996.                 0006h set ???
  6997.                 0007h set ???
  6998.                 else Return: DX:AX = FFFFh:FFFFh
  6999.         Return: STACK unchanged
  7000.         000Fh get ???
  7001.         Return: AX = ??? (seen 0008h)
  7002.         0010h get ???
  7003.         Return: AX = ???
  7004.         0011h determine whether selector is valid
  7005.         STACK:    WORD    possible selector
  7006.         Return: AX = selector or 0000h if invalid
  7007.             STACK unchanged
  7008.         0012h get physical address
  7009.         STACK:    WORD    selector for desired segment
  7010.             WORD    segment number if in real mode
  7011.             DWORD    offset within segment
  7012.         Return: DX:AX = 32-bit physical address or 00000000h on error
  7013.             BX destroyed
  7014.             STACK unchanged
  7015.         0013h ???
  7016.         Note:    normally jumps to code for function 0012h
  7017.         0014h copy protected-mode memory to conventional memory, with ???
  7018.         STACK:    WORD    selector for source segment
  7019.             WORD    segment of source if in real mode???
  7020.             DWORD    offset of source
  7021.             WORD    number of bytes to copy
  7022.             DWORD -> low-memory destination
  7023.         Return: AX = status???
  7024.             STACK unchanged
  7025.         0015h copy conventional memory to protected-mode memory, with ???
  7026.         STACK:    WORD    selector for destination segment
  7027.             WORD    segment of destination if in real mode???
  7028.             DWORD    offset of destination
  7029.             WORD    number of bytes to copy
  7030.             DWORD -> low-memory source
  7031.         Return: AX = status???
  7032.             STACK unchanged
  7033.         0016h set ??? pointer
  7034.         STACK:    WORD    unused
  7035.             DWORD -> ??? or 0000h:0000h
  7036.         Return: AX = 0000h
  7037.             STACK unchanged
  7038.         0017h allocate real-mode procedure???
  7039.         STACK:    DWORD    ASCIZ name of procedure
  7040.             DWORD ???
  7041.             DWORD    address of subroutine to invoke
  7042.         Return: AX = status
  7043.                 0032h procedure by that name exists
  7044.                 0033h no more real-mode procedures available
  7045.             DX destroyed
  7046.             STACK unchanged
  7047.         0018h unused
  7048.         Return: AX = 0001h
  7049.         0019h get parameter block
  7050.         Return: DX:AX -> parameter block (format unknown at this time,
  7051.                   but 92h bytes)
  7052.                   (preceded by signature "!!PARAM-BLOCK!!")
  7053.         001Ah get ???
  7054.         Return: AX = ??? (0148h seen)
  7055.         001Bh free real-mode procedure???
  7056.         STACK:    DWORD -> ASCIZ name of procedure
  7057.         Return: ???
  7058.             STACK unchanged
  7059.         001Ch check whether packets from protected mode task pending
  7060.         Return: AX = 0001h if packets pending, 0000h if not
  7061.         001Dh set ???
  7062.         STACK:    DWORD ??? or 0000h:0000h
  7063.         Return: AX,BX destroyed
  7064.             STACK unchanged
  7065.         001Eh ???
  7066.         STACK:    WORD ??? (high byte ignored)
  7067.             DWORD -> data structure (below)
  7068.         Return: AX,BX,CX,DX destroyed
  7069.             data structure updated
  7070.             STACK unchanged
  7071.         Format of data structure:
  7072.         Offset    Size    Description
  7073.          00h  2 BYTEs    unused
  7074.          02h    WORD    ???
  7075.          04h    WORD    ???
  7076.          06h    WORD    ???
  7077.          08h  2 BYTEs    unused
  7078.          0Ah    WORD    ???
  7079.          0Ch    WORD    (call) ???
  7080.                 (ret) offset of this data structure (BUG?)
  7081.         001Fh set ???
  7082.         STACK:    WORD ??? (set to 0001h if zero)
  7083.         Return: AX destroyed
  7084.             STACK unchanged
  7085.         0020h ???
  7086.         STACK:    DWORD -> ??? (8 bytes of data)
  7087.         Return: AX = ???
  7088.             STACK unchanged
  7089.         0021h ???
  7090.         STACK:    DWORD -> ??? (8 bytes of data)
  7091.             WORD    ???
  7092.             WORD    ???
  7093.         Return: AX = ???
  7094.             STACK unchanged
  7095.         0022h ???
  7096.         STACK:    DWORD -> ??? (8 bytes of data)
  7097.             DWORD -> 4-byte buffer for results
  7098.         Return: AX = ???
  7099.             STACK unchanged
  7100.         0023h ???
  7101.         STACK:    DWORD -> ??? (8 bytes of data)
  7102.         Return: AX = ???
  7103.             STACK unchanged
  7104.         0024h set ???
  7105.         STACK:    WORD ???
  7106.         Return: AX destroyed
  7107.             STACK unchanged
  7108.         0025h get ???
  7109.         Return: AX = ??? (value set with func 0024h)
  7110.         0026h BUG: jumps to hyperspace due to fencepost error
  7111.         FFFFh set DOS memory management functions
  7112.         BX:SI -> FAR routine for allocating DOS memory
  7113.               (called with AH=48h,BX=number of paragraphs to alloc;
  7114.               returns CF clear, AX=segment of allocated memory, or
  7115.                   CF set on error)
  7116.         CX:DI -> FAR routine for freeing DOS memory
  7117.               (called with AH=49h,ES=segment of block to free;
  7118.               returns CF set on error, AX=error code)
  7119.         Note: each of these pointers normally points at INT 21/RETF
  7120.         other Return: AX = 0001h
  7121. Note:    BX may be destroyed by any of the API calls
  7122. --------E-2FFBA1BX0084-----------------------
  7123. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  7124.     AX = FBA1h
  7125.     BX = 0084h
  7126.     ES:DI -> response buffer (see #2392)
  7127. Return: ES:DI buffer filled
  7128. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7129.  
  7130. Format of TKERNEL response buffer:
  7131. Offset    Size    Description    (Table 2392)
  7132.  00h  4 BYTEs    signature "IABH"
  7133.  04h    WORD    success indicator
  7134.         0001h failed (INT 2F hooked by another program)
  7135.         unchanged if successful
  7136.  06h    WORD    segment of ???
  7137.  08h    WORD    segment of ??? memory block to free if nonzero
  7138.  0Ah    WORD    segment of ??? memory block to free if nonzero
  7139. --------s-2FFBFBES0000-----------------------
  7140. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  7141.     AX = FBFBh
  7142.     ES = 0000h
  7143. Return: ES nonzero if installed
  7144.         ES:BX -> entry point data structure (see #2393)
  7145. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  7146.  
  7147. Format of SoundBlaster entry point data structure:
  7148. Offset    Size    Description    (Table 2393)
  7149.  00h  3 BYTEs    signature "FB "
  7150.  03h    BYTE    driver major version number???
  7151.  04h    DWORD    speech driver entry point (see #2394)
  7152.  08h 24 BYTEs    ???
  7153.  20h  ? BYTEs    data buffer for calling speech driver
  7154.           (can be 117 bytes or more)
  7155.  
  7156. (Table 2394)
  7157. Call SoundBlaster speech driver entry point with:
  7158.     AL = function
  7159.         07h speak a string
  7160.         data buffer (see #2393) contains:
  7161.             BYTE  length of string
  7162.               N BYTEs string to speak
  7163. --------K-2FFD12-----------------------------
  7164. INT 2F - KS/KEYSTKCT.EXE - INSTALLATION CHECK
  7165.     AX = FD12h
  7166. Return: AX = 0093h if installed
  7167.         ES = resident code segment
  7168.         ES:CX -> internal "putbuf" routine
  7169. Program: KS/KEYSTKCT.EXE is a key stacking utility (4DOS KEYSTACK.SYS
  7170.       look-alike) by Martin Gerdes, published in c't 11/1991, which can be
  7171.       loaded as a device driver or as a TSR. It does not emulate 4DOS
  7172.       KSTACK API
  7173. Note:    the default buffer size is 128 keys
  7174. --------N-2FFE00BX4454-----------------------
  7175. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7176.     AX = FE00h
  7177.     BX = 4454h ("DT")
  7178.     CX = 4B52h ("KR")
  7179.     DX = 4E4Dh ("NM")
  7180. Return: AL = FFh if installed
  7181.        BX = 524Eh ("RM")
  7182.        CX = 4D44h ("MD")
  7183.        DX = 544Bh ("TK")
  7184. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7185. SeeAlso: AX=FE08h
  7186. --------N-2FFE00BX4454-----------------------
  7187. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7188.     AX = FE00h
  7189.     BX = 4454h ("DT")
  7190.     CX = 4B52h ("KR")
  7191.     DX = 544Dh ("TM")
  7192. Return: AL = FFh if installed
  7193.        BX = 5254h ("RT")
  7194.        CX = 4D44h ("MD")
  7195.        DX = 544Bh ("TK")
  7196. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7197. SeeAlso: AX=FE08h
  7198. --------U-2FFE00DI4E55-----------------------
  7199. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  7200.     AX = FE00h
  7201.     DI = 4E55h ("NU")
  7202.     SI = TSR identifier (see #2395)
  7203. Return: SI = TSR reply
  7204.         lowercase version of SI on entry (i.e. SI OR 2020h)
  7205.     AH = status
  7206.         00h installed but disabled internally
  7207.         01h installed and enabled
  7208.     AL = installed product
  7209.         00h NCACHE-x or DISKREET
  7210.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  7211.         02h NCACHE2 / SMARTCAN
  7212.         45h DISKMON v5 installed
  7213.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  7214.           (see #2396,#2397)
  7215.     CX = segment of resident portion
  7216.         FFFFh if completely loaded high (NCACHE)
  7217. ---FILESAVE/EP---
  7218.     DL = ??? (apparently always 00h)
  7219. ---DISKMON---
  7220.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  7221. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  7222.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  7223.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  7224.     to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
  7225. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  7226. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  7227.  
  7228. (Table 2395)
  7229. Values for Norton Utilities TSR identifier:
  7230.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
  7231.  4353h    ("CS") NCACHE-S (v5 only)
  7232.  4443h    ("DC") DISKREET
  7233.  444Dh    ("DM") DISKMON
  7234.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
  7235.  
  7236. Format of DISKMON.INI file:
  7237. Offset    Size    Description    (Table 2396)
  7238. -6Ch 108 BYTEs    (in memory copy only)
  7239.         list of filenames which are always protected:
  7240.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  7241.           MIO.SYS/IO.BIN, COMMAND.COM
  7242.  00h    BYTE    ??? always 01h
  7243.  01h    BYTE    disk light (00h off, 01h on)
  7244.  02h    BYTE    disk protection (00h off, 01h on)
  7245.  03h    BYTE    protected areas
  7246.         01h system area
  7247.         02h files
  7248.         03h system area and files
  7249.         04h entire disk
  7250.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  7251.  05h 27 BYTEs    filename extension list (9 entries)
  7252.         (lowercase, blank padded or = 000000h)
  7253.  20h 240 BYTEs    filename list (20 entries)
  7254.         (lowercase, name and extension blank padded, with '.')
  7255. Note:    CX:0508h -> copy in installed TSR (v5)
  7256.     CX:052Fh -> copy in installed TSR (v6)
  7257.     CX:04E0h -> copy in installed TSR (v7-v8)
  7258.  
  7259. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  7260. Offset    Size    Description    (Table 2397)
  7261.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  7262.  00h    BYTE    drives    A: - H:
  7263.  01h    BYTE    drives    I: - P:
  7264.  02h    BYTE    drives    Q: - X:
  7265.  03h    BYTE    drives    Y: - Z:
  7266.  04h    BYTE    which files to protect
  7267.         00h all files
  7268.         01h all files with extension in list
  7269.         02h all files except those with extension in list
  7270.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  7271.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  7272.  21h    WORD    number of days after which files are purged (0 = never)
  7273.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  7274. Note:    CX:03D2h -> copy in installed TSR (v5)
  7275.     CX:03F5h -> copy in installed TSR (v6)
  7276.     CX:0434h -> copy in installed TSR (v7-v8)
  7277. --------U-2FFE00DX474F-----------------------
  7278. INT 2F - GO! v3.22+ - API
  7279.     AX = FE00h
  7280.     DX = 474Fh ('GO')
  7281.     SI = function number
  7282.         0063h (BCD for '?') installation check
  7283.         0078h (BCD for 'N') non-registered search (two levels only)
  7284.         0082h (BCD for 'R') reserved for registered version
  7285.         0083h (BCD for 'S') reserved for registered version
  7286.         0085h (BCD for 'U') uninstall
  7287.     BX:CX -> buffer (for search functions)
  7288.         buffer filled with search spec, i.e. "APL" to get first
  7289.           directory containing the substring APL, ":\APL" to find
  7290.           the first top-level directory beginning with the letters
  7291.           APL
  7292. Return: BX:CX buffer filled with result (search functions only)
  7293.         result is counted ASCIZ directory name, empty string if
  7294.         no matches (i.e. first byte is length of name, followed by
  7295.         name)
  7296. Program: GO! is a shareware directory locator TSR by Steve Ryckman
  7297. Note:    the application-supplied buffer for the requests and results which
  7298.       BX:CX points at must lie outside the conventional (low-640K)
  7299.       memory, since the TSR swaps memory on pop-up; a common location is
  7300.       the last 96 bytes of the video memory or a UMB
  7301. --------U-2FFE01DI4E55-----------------------
  7302. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  7303.     AX = FE01h
  7304.     DI = 4E55h ("NU")
  7305.     SI = TSR identifier (see #2395)
  7306. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7307.     AX = status
  7308.         0002h successful (DISKMON, FILESAVE, EP)
  7309.         FE00h successful (NCACHE-x, DISKREET)
  7310. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  7311.       report generated by the programs still indicates the previous state,
  7312.       and DISKMON.INI is not updated
  7313.     apparently has no effect on DISKREET
  7314. SeeAlso: AX=FE00h,AX=FE02h
  7315. --------U-2FFE02DI4E55-----------------------
  7316. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  7317.     AX = FE02h
  7318.     DI = 4E55h ("NU")
  7319.     SI = TSR identifier (see #2395)
  7320. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7321.     AX = status
  7322.         0004h successful (DISKMON, FILESAVE)
  7323.         FE00h successful (NCACHE-x, DISKREET)
  7324. Notes:    (see also AX=FE01h)
  7325.     this function appears to be unsafe, as the cache buffers are not
  7326.       flushed
  7327. SeeAlso: AX=FE00h,AX=FE01h
  7328. --------U-2FFE03DI4E55-----------------------
  7329. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  7330.     AX = FE03h
  7331.     DI = 4E55h ("NU")
  7332.     SI = TSR identifier (see #2395)
  7333. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7334.     AX = status
  7335.         0006h successful???
  7336. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  7337.     useful for flushing NCACHE before rebooting
  7338. SeeAlso: AX=FE00h,AX=FE10h
  7339. --------U-2FFE04DI4E55-----------------------
  7340. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7341.     AX = FE04h
  7342.     DI = 4E55h ("NU")
  7343.     SI = TSR identifier (see #2395)
  7344. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7345.     AX = status
  7346.         0008h successful???
  7347. SeeAlso: AX=FE00h
  7348. --------U-2FFE05DI4E55-----------------------
  7349. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7350.     AX = FE05h
  7351.     DI = 4E55h ("NU")
  7352.     SI = TSR identifier (see #2395)
  7353. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7354.     AX = status
  7355.         000Ah successful???
  7356. Note:    reportedly dangerous
  7357. SeeAlso: AX=FE00h
  7358. --------N-2FFE08-----------------------------
  7359. INT 2F - PC-NFS ??? - GET ???
  7360.     AX = FE08h
  7361. Return: ES:BX -> ???
  7362. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7363.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  7364.       to AX=FE00h/DX=544Dh support this function
  7365. SeeAlso: AX=FE00h/BX=4454h
  7366. --------U-2FFE10DI4E55-----------------------
  7367. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  7368.     AX = FE10h
  7369.     DI = 4E55h ("NU")
  7370.     SI = TSR identifier (see #2395)
  7371. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7372.     AX = status
  7373. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  7374.       detected
  7375. SeeAlso: AX=FE03h
  7376. --------S-2FFEEF-----------------------------
  7377. INT 2F - RTS Control TSR - INSTALLATION CHECK
  7378.     AX = FEEFh
  7379. Return: AX = EFFEh if installed
  7380.         BX = port address
  7381. Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
  7382.       signal on a COM port during disk accesses to avoid losing incoming
  7383.       data
  7384. --------N-2FFF00-----------------------------
  7385. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  7386.     AX = FF00h
  7387. Return: AL = status
  7388.         00h not installed, OK to install
  7389.         01h not installed, not OK to install
  7390.         FFh installed
  7391. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
  7392. --------N-2FFF01-----------------------------
  7393. INT 2F - Topware Network Operating System - GET VERSION
  7394.     AX = FF01h
  7395. Return: AX = version
  7396. SeeAlso: AX=FF00h,AX=FF02h
  7397. --------N-2FFF02-----------------------------
  7398. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  7399.     AX = FF02h
  7400. Return: ES:BX -> version string
  7401. SeeAlso: AX=FF00h,AX=FF01h
  7402. --------N-2FFF10-----------------------------
  7403. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  7404.     AX = FF10h
  7405. Return: AL = status (00h not installed, 01h installed)
  7406. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  7407. --------N-2FFF11-----------------------------
  7408. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  7409.     AX = FF11h
  7410. Note:    this function is only available on workstations, not on the server
  7411. SeeAlso: AX=FF10h,AX=FF12h
  7412. --------N-2FFF12-----------------------------
  7413. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  7414.     AX = FF12h
  7415. Note:    this function is only available on workstations, not on the server
  7416. SeeAlso: AX=FF10h,AX=FF11h
  7417. --------N-2FFF13-----------------------------
  7418. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  7419.     AX = FF13h
  7420.     CL = new state (00h off, 01h on)
  7421. SeeAlso: AX=FF10h
  7422. --------N-2FFF14-----------------------------
  7423. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  7424.     AX = FF14h
  7425. Note:    this function is only available on workstations, not on the server
  7426. SeeAlso: AX=FF10h,AX=FF15h
  7427. --------N-2FFF15-----------------------------
  7428. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  7429.     AX = FF15h
  7430. Note:    this function is only available on workstations, not on the server
  7431. SeeAlso: AX=FF10h,AX=FF14h
  7432. --------N-2FFF16-----------------------------
  7433. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  7434.     AX = FF16h
  7435.     BL = which to set (00h TopShow, FFh TopTerm)
  7436.     CX = destination screen
  7437.         0000h all stations
  7438.         0000h-00FFh (TopTerm only) send to group CL
  7439.         8001h-80FEh send to station CL
  7440. SeeAlso: AX=FF18h
  7441. --------N-2FFF18-----------------------------
  7442. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  7443.     AX = FF18h
  7444. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  7445. --------N-2FFF23-----------------------------
  7446. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  7447.     AX = FF23h
  7448. SeeAlso: AX=FF00h
  7449. --------N-2FFF27-----------------------------
  7450. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  7451.     AX = FF27h
  7452. Return: AL = type (00h complete version, 01h simple version)
  7453.     BL = "show" functions flag (00h disabled, 01h enabled)
  7454. SeeAlso: AX=FF16h,AX=FF18h
  7455. --------D-30---------------------------------
  7456. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  7457.    the CALL 5 entry point does a FAR jump to here
  7458. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  7459.       memory
  7460. SeeAlso: INT 21/AH=26h
  7461. --------V-30---------------------------------
  7462. INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
  7463. Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
  7464.       Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
  7465.       provide a graphical user interface
  7466. SeeAlso: INT 2F/AX=ACF0h
  7467. --------W-30---------------------------------
  7468. INT 30 P - MS Windows 3.1+ - PROTECTED-MODE CALLBACK
  7469. SeeAlso: INT 20"Windows"
  7470. --------D-31---------------------------------
  7471. INT 31 - overwritten by CP/M jump instruction in INT 30
  7472. --------v-31---------------------------------
  7473. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  7474. Note:    if one of the Vacsina viruses is resident, the low byte of this
  7475.       interrupt still contains the last byte of the INT 30 CP/M JMP
  7476.       instruction, but the remaining three bytes are 7Fh 39h followed
  7477.       by the Vacsina version number
  7478. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  7479. --------E-310000-----------------------------
  7480. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  7481.     AX = 0000h
  7482.     CX = number of descriptors to allocate
  7483. Return: CF clear if successful
  7484.         AX = base selector
  7485.     CF set on error
  7486.         AX = error code (DPMI 1.0+) (see #2398)
  7487. Notes:    DPMI is the DOS Protected-Mode Interface
  7488.     the base and limit of the returned descriptors will be 0, and the type
  7489.       will be "data"
  7490.     add the value returned by INT 31/AX=0003h to move to subsequent
  7491.       descriptors if multiple descriptors were allocated
  7492.     not supported by MS Windows 3.0 in Standard mode
  7493. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  7494.  
  7495. (Table 2398)
  7496. Values for DPMI 1.0 error code:
  7497.  0000h-7FFFh DOS error passed through by DPMI
  7498.  8001h    unsupported function
  7499.  8002h    object in wrong state for function
  7500.  8003h    system integrity would be endangered
  7501.  8004h    deadlock detected
  7502.  8005h    pending serialization request cancelled
  7503.  8010h    out of DPMI internal resources
  7504.  8011h    descriptor unavailable
  7505.  8012h    linear memory unavailable
  7506.  8013h    physical memory unavailable
  7507.  8014h    backing store unavailable
  7508.  8015h    callback unavailable
  7509.  8016h    handle unavailable
  7510.  8017h    maximum lock count exceeded
  7511.  8018h    shared memory already serialized exclusively by another
  7512.  8019h    shared memory already serialized shared by another client
  7513.  8021h    invalid value for numeric or flag parameter
  7514.  8022h    invalid segment selector
  7515.  8023h    invalid handle
  7516.  8024h    invalid callback
  7517.  8025h    invalid linear address
  7518.  8026h    request not supported by hardware
  7519. --------E-310001-----------------------------
  7520. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  7521.     AX = 0001h
  7522.     BX = selector to free
  7523. Return: CF clear if successful
  7524.     CF set on error
  7525.         AX = error code (DPMI 1.0+) (8022h) (see #2398)
  7526. Notes:    only one descriptor is freed per call
  7527.     the program's initial CS, DS, and SS descriptors may be freed
  7528.     (DPMI 1.0+) any segment registers containing the freed selector are
  7529.       set to 0000h
  7530.     not supported by MS Windows 3.0 in Standard mode
  7531. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  7532. --------E-310002-----------------------------
  7533. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  7534.     AX = 0002h
  7535.     BX = real mode segment
  7536. Return: CF clear if successful
  7537.         AX = selector corresponding to real mode segment (64K limit)
  7538.     CF set on error
  7539.         AX = error code (DPMI 1.0+) (8011h) (see #2398)
  7540. Notes:    multiple calls for the same real mode segment return the same selector
  7541.     the returned descriptor can never be modified or freed
  7542.     not supported by MS Windows 3.0 in Standard mode
  7543. --------E-310003-----------------------------
  7544. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  7545.     AX = 0003h
  7546. Return: CF clear
  7547.         AX = value to add to get next sequential selector
  7548. Notes:    the increment will be a power of two
  7549.     not supported by MS Windows 3.0 in Standard mode
  7550. SeeAlso: AX=0000h
  7551. --------E-310004-----------------------------
  7552. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  7553.     AX = 0004h
  7554.     BX = selector to lock (prevent paging)
  7555. Return: ???
  7556. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  7557.       specification, this function is called by MS Windows TASKMAN,
  7558.       PROGMAN, and KERNEL
  7559. SeeAlso: AX=0005h,AX=0600h
  7560. --------E-310005-----------------------------
  7561. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  7562.     AX = 0005h
  7563.     BX = selector to unlock (permit paging)
  7564. Return: ???
  7565. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  7566.       specification, this function is called by MS Windows TASKMAN,
  7567.       PROGMAN, and KERNEL
  7568. SeeAlso: AX=0004h,AX=0601h
  7569. --------E-310006-----------------------------
  7570. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  7571.     AX = 0006h
  7572.     BX = selector
  7573. Return: CF clear if successful
  7574.         CX:DX = linear base address of segment
  7575.     CF set on error
  7576.         AX = error code (DPMI 1.0+) (8022h) (see #2398)
  7577. Note:    not supported by MS Windows 3.0 in Standard mode
  7578. SeeAlso: AX=0007h,INT 21/AX=3504h
  7579. --------E-310007-----------------------------
  7580. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  7581.     AX = 0007h
  7582.     BX = selector
  7583.     CX:DX = linear base address
  7584. Return: CF clear if successful
  7585.     CF set on error
  7586.         AX = error code (DPMI 1.0+) (8022h,8025h) (see #2398)
  7587. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  7588.     only the low 24 bits of the address will be used by 16-bit DPMI
  7589.       implementations even on a 386 or higher
  7590.     DPMI 1.0+ automatically reloads any segment registers containing the
  7591.       selector being modified
  7592.     not supported by MS Windows 3.0 in Standard mode
  7593. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  7594. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  7595. --------E-310008-----------------------------
  7596. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  7597.     AX = 0008h
  7598.     BX = selector
  7599.     CX:DX = segment limit
  7600. Return: CF clear if successful
  7601.     CF set on error
  7602.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2398)
  7603. Notes:    CX must be zero for 16-bit DPMI implementations
  7604.     limits greater than 1MB must be page aligned (low 12 bits set)
  7605.     only modify descriptors allocated with INT 31/AX=0000h
  7606.     DPMI 1.0+ automatically reloads any segment registers containing the
  7607.       selector being modified
  7608.     not supported by MS Windows 3.0 in Standard mode
  7609. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  7610. SeeAlso: INT 2C/AX=0003h,#0405 at INT 15/AH=89h
  7611. --------E-310009-----------------------------
  7612. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  7613.     AX = 0009h
  7614.     BX = selector
  7615.     CL = access rights/type byte (see #0406 at INT 15/AH=89h)
  7616.     CH = 80386 extended rights/type byte (see #0407 at INT 15/AH=89h)
  7617.         (32-bit DPMI implementations only)
  7618. Return: CF clear if successful
  7619.     CF set on error
  7620.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2398)
  7621. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  7622.     DPMI 1.0+ automatically reloads any segment registers containing the
  7623.       selector being modified
  7624.     not supported by MS Windows 3.0 in Standard mode
  7625. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  7626. SeeAlso: INT 2C/AX=0005h
  7627. --------E-31000A-----------------------------
  7628. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  7629.     AX = 000Ah
  7630.     BX = selector
  7631. Return: CF clear if successful
  7632.         AX = new data selector
  7633.     CF set on error
  7634.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #2398)
  7635. Notes:    fails if selector in BX is not a code segment or is invalid
  7636.     use INT 31/AX=0001h to free new selector
  7637.     future changes to the original selector will not be reflected in the
  7638.       returned alias selector
  7639.     not supported by MS Windows 3.0 in Standard mode
  7640. SeeAlso: AX=0001h
  7641. --------E-31000B-----------------------------
  7642. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  7643.     AX = 000Bh
  7644.     BX = LDT selector
  7645.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  7646. Return: CF clear if successful
  7647.         buffer filled
  7648.     CF set on error
  7649.         AX = error code (DPMI 1.0+) (8022h) (see #2398)
  7650. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  7651.     not supported by MS Windows 3.0 in Standard mode
  7652. SeeAlso: AX=000Ch
  7653. --------E-31000C-----------------------------
  7654. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  7655.     AX = 000Ch
  7656.     BX = LDT selector
  7657.     ES:(E)DI -> 8-byte buffer containing descriptor
  7658. Return: CF clear if successful
  7659.     CF set on error
  7660.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2398)
  7661. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  7662.     only modify descriptors allocated with INT 31/AX=0000h
  7663.     DPMI 1.0+ automatically reloads any segment registers containing the
  7664.       selector being modified
  7665.     not supported by MS Windows 3.0 in Standard mode
  7666. SeeAlso: AX=000Bh
  7667. --------E-31000D-----------------------------
  7668. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  7669.     AX = 000Dh
  7670.     BX = LDT selector
  7671. Return: CF clear if successful
  7672.         descriptor allocated
  7673.     CF set on error
  7674.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #2398)
  7675. Notes:    free descriptor with INT 31/AX=0001h
  7676.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  7677.       some may already be in use by other applications under DPMI 0.9;
  7678.       DPMI 1.0 guarantees 16 descriptors per client
  7679.     not supported by MS Windows 3.0 in Standard mode
  7680. SeeAlso: AX=0000h,AX=0001h
  7681. --------E-31000E-----------------------------
  7682. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  7683.     AX = 000Eh
  7684.     CX = number of descriptors to copy
  7685.     ES:(E)DI -> descriptor buffer (see #2399)
  7686. Return: CF clear if successful
  7687.         descriptors copied
  7688.     CF set on error
  7689.         AX = error code (8022h) (see #2398)
  7690.         CX = number of descriptors successfully copied
  7691. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  7692.     if the function fails, the first CX descriptors are valid; the
  7693.       remainder are not modified
  7694. SeeAlso: AX=000Bh,AX=000Fh
  7695.  
  7696. Format of DPMI descriptor buffer entry (one per descriptor to get):
  7697. Offset    Size    Description    (Table 2399)
  7698.  00h    WORD    selector (set by client)
  7699.  02h    QWORD    descriptor (set by host)
  7700. --------E-31000F-----------------------------
  7701. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  7702.     AX = 000Fh
  7703.     CX = number of descriptors to copy
  7704.     ES:(E)DI -> descriptor buffer (see #2400)
  7705. Return: CF clear if successful
  7706.         descriptors copied
  7707.     CF set on error
  7708.         AX = error code (8021h,8022h,8025h) (see #2398)
  7709.         CX = number of descriptors successfully copied
  7710. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  7711.     if the function fails, the first CX descriptors are valid; the
  7712.       remainder are not modified
  7713.     DPMI 1.0+ automatically reloads any segment registers containing a
  7714.       selector being modified
  7715. SeeAlso: AX=000Ch,AX=000Eh
  7716.  
  7717. Format of DPMI descriptor buffer entry (one per descriptor to set):
  7718. Offset    Size    Description    (Table 2400)
  7719.  00h    WORD    selector
  7720.  02h    QWORD    descriptor
  7721. --------E-310100-----------------------------
  7722. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  7723.     AX = 0100h
  7724.     BX = number of paragraphs to allocate
  7725. Return: CF clear if successful
  7726.         AX = real mode segment of allocated block
  7727.         DX = first selector for allocated block
  7728.     CF set on error
  7729.         AX = DOS error code (07h,08h) (see #1020 at INT 21/AH=59h/BX=0000h)
  7730.         (DPMI 1.0+) DPMI error code (8011h) (see #2398)
  7731.         BX = size (in paragraphs) of largest available block
  7732. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  7733.       if the caller is a 16-bit program
  7734.     never modify or deallocate returned descriptors
  7735.     not supported by MS Windows 3.0 in Standard mode
  7736. SeeAlso: AX=0101h,AX=0501h
  7737. --------E-310101-----------------------------
  7738. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  7739.     AX = 0101h
  7740.     DX = selector of block
  7741. Return: CF set if successful
  7742.     CF set on error
  7743.         AX = DOS error code (07h,09h) (see #1020 at INT 21/AH=59h/BX=0000h)
  7744. Notes:    all descriptors allocated for the block are automatically freed
  7745.     DPMI 1.0+ automatically zeros any segment registers containing a
  7746.       selector freed by this function
  7747.     not supported by MS Windows 3.0 in Standard mode
  7748. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  7749. --------E-310102-----------------------------
  7750. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  7751.     AX = 0102h
  7752.     BX = new block size in paragraphs
  7753.     DX = selector of block
  7754. Return: CF clear if successful
  7755.     CF set on error
  7756.         AX = DOS error code (07h,08h,09h)
  7757.           (see #1020 at INT 21/AH=59h/BX=0000h)
  7758.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #2398)
  7759.         BX = maximum block size (in paragraphs) possible
  7760. Notes:    increasing the size of a block past a 64K boundary will fail if the
  7761.       next descriptor in the LDT is already in use
  7762.     shrinking a block past a 64K boundary will cause some selectors to be
  7763.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  7764.       a selector freed by this function
  7765.     not supported by MS Windows 3.0 in Standard mode
  7766. SeeAlso: AX=0100h
  7767. --------E-310200-----------------------------
  7768. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  7769.     AX = 0200h
  7770.     BL = interrupt number
  7771. Return: CF clear
  7772.     CX:DX = segment:offset of real mode interrupt handler
  7773. Note:    the DPMI implementation is required to support all 256 vectors
  7774. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  7775. --------E-310201-----------------------------
  7776. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  7777.     AX = 0201h
  7778.     BL = interrupt number
  7779.     CX:DX = segment:offset of real mode handler
  7780. Return: CF clear
  7781. Note:    all memory that may be touched by a hardware interrupt handler must be
  7782.       locked down with INT 31/AX=0600h
  7783. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  7784. --------E-310202-----------------------------
  7785. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  7786.     AX = 0202h
  7787.     BL = exception number (00h-1Fh)
  7788. Return: CF clear if successful
  7789.         CX:(E)DX = selector:offset of handler
  7790.     CF set on error
  7791.         AX = error code (DPMI 1.0+) (8021h) (see #2398)
  7792. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  7793.     DPMI 1.0+ supports this function only for backward compatibility; use
  7794.        AX=0210h or AX=0211h instead
  7795.     not supported by MS Windows 3.0 in Standard mode
  7796. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  7797. --------E-310203-----------------------------
  7798. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  7799.     AX = 0203h
  7800.     BL = exception number (00h-1Fh)
  7801.     CX:(E)DX = selector:offset of handler
  7802. Return: CF clear if successful
  7803.     CF set on error
  7804.         AX = error code (DPMI 1.0+) (8021h,8022h) (see #2398)
  7805. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  7806.       stack frame on chaining to the next exception handler
  7807.     the handler should return using a FAR return
  7808.     all fault stack frames contain an error code, but it is only valid for
  7809.       exceptions 08h and 0Ah-0Eh
  7810.     handlers will only be called if the exception occurs in protected mode,
  7811.       and the DPMI host does not transparently handle the exception
  7812.     the handler may change certain values on the stack frame
  7813.       (see #2401,#2402)
  7814.     DPMI 1.0+ supports this function only for backward compatibility; use
  7815.        AX=0212h or AX=0213h instead
  7816.     not supported by MS Windows 3.0 in Standard mode
  7817. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  7818.  
  7819. Format of stack frame for 16-bit programs: (offset from SS:SP)
  7820. Offset    Size    Description    (Table 2401)
  7821.  00h    DWORD    return CS:IP (do not change)
  7822.  04h    WORD    error code
  7823.  06h    DWORD    CS:IP of exception
  7824.  0Ah    WORD    flags
  7825.  0Ch    DWORD    SS:SP
  7826.  
  7827. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  7828. Offset    Size    Description    (Table 2402)
  7829.  00h    DWORD    return EIP (do not change)
  7830.  04h    WORD    return CS selector (do not change)
  7831.  06h    WORD    reserved (do not change)
  7832.  08h    DWORD    error code
  7833.  0Ch    DWORD    EIP of exception
  7834.  10h    WORD    CS selector of exception
  7835.  12h    WORD    reserved (do not change)
  7836.  14h    DWORD    EFLAGS
  7837.  18h    DWORD    ESP
  7838.  1Ch    WORD    SS
  7839.  1Eh    WORD    reserved (do not change)
  7840. --------E-310204-----------------------------
  7841. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  7842.     AX = 0204h
  7843.     BL = interrupt number
  7844. Return: CF clear
  7845.     CX:(E)DX = selector:offset of handler
  7846. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  7847.     DPMI implementations are required to support all 256 vectors
  7848.     not supported by MS Windows 3.0 in Standard mode
  7849. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  7850. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  7851. --------E-310205-----------------------------
  7852. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  7853.     AX = 0205h
  7854.     BL = interrupt number
  7855.     CX:(E)DX = selector:offset of handler
  7856. Return: CF clear if successful
  7857.     CF set on error
  7858.         AX = error code (DPMI 1.0+) (8022h) (see #2398)
  7859. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  7860.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  7861.       to the next handler
  7862.     DPMI implementations are required to support all 256 vectors
  7863.     hardware interrupts are reflected to the virtual machine's primary
  7864.       client, software interrupts to the current client
  7865.     not supported by MS Windows 3.0 in Standard mode
  7866. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  7867. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  7868. --------E-310210-----------------------------
  7869. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  7870.     AX = 0210h
  7871.     BL = exception number (00h-1Fh)
  7872. Return: CF clear if successful
  7873.         CX:(E)DX = selector:offset of exception handler
  7874.     CF set on error
  7875.         AX = error code (8021h) (see #2398)
  7876. Note:    DPMI host reflects exception to current client's handler
  7877. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  7878. --------E-310211-----------------------------
  7879. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  7880.     AX = 0211h
  7881.     BL = exception number (00h-1Fh)
  7882. Return: CF clear if successful
  7883.         CX:(E)DX = selector:offset of exception handler
  7884.     CF set on error
  7885.         AX = error code (8021h) (see #2398)
  7886. Notes:    returns address of protected-mode handler for real-mode exception
  7887.     DPMI host performs a switch to protected mode, reflects the exception
  7888.       to the virtual machine's primary client, and returns to real mode
  7889.       on the handler's completion
  7890. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  7891. --------E-310212-----------------------------
  7892. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  7893.     AX = 0212h
  7894.     BL = exception or fault number (00h-1Fh)
  7895.     CX:(E)DX = exception handler selector:offset
  7896. Return: CF clear if successful
  7897.     CF set on error
  7898.         AX = error code (8021h,8022h) (see #2398)
  7899. Note:    DPMI host sends exception to current client's handler
  7900. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  7901. --------E-310213-----------------------------
  7902. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  7903.     AX = 0213h
  7904.     BL = exception or fault number (00h-1Fh)
  7905.     CX:(E)DX = exception handler selector:offset
  7906. Return: CF clear if successful
  7907.     CF set on error
  7908.         AX = error code (8021h,8022h) (see #2398)
  7909. Notes:    specifies address of protected-mode handler for real-mode exception
  7910.     DPMI host performs a switch to protected mode, reflects the exception
  7911.       to the virtual machine's primary client, and returns to real mode
  7912.       on the handler's completion
  7913. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  7914. --------E-310300-----------------------------
  7915. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  7916.     AX = 0300h
  7917.     BL = interrupt number
  7918.     BH = flags
  7919.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  7920.             reserved, must be 0 (DPMI 1.0+)
  7921.         others: reserved, must be 0
  7922.     CX = number of words to copy from protected mode to real mode stack
  7923.     ES:(E)DI = selector:offset of real mode call structure (see #2403)
  7924. Return: CF clear if successful
  7925.         real mode call structure modified (all fields except SS:SP, CS:IP
  7926.           filled with return values from real mode interrupt)
  7927.     CF set on error
  7928.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2398)
  7929.     protected mode stack unchanged
  7930. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  7931.     CS:IP in the real mode call structure is ignored for this call,
  7932.       instead, the indicated interrupt vector is used for the address
  7933.     the flags in the call structure are pushed on the real mode stack to
  7934.       form an interrupt stack frame, and the trace and interrupt flags are
  7935.       clear on entry to the handler
  7936.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  7937.     the real mode handler must return with the stack in the same state as
  7938.       it was on being called
  7939. SeeAlso: AX=0302h,AX=FF01h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
  7940. SeeAlso: INT 2C/AX=0026h,INT 2F/AX=FB42h/BX=000Dh
  7941.  
  7942. Format of DPMI real mode call structure:
  7943. Offset    Size    Description    (Table 2403)
  7944.  00h    DWORD    EDI
  7945.  04h    DWORD    ESI
  7946.  08h    DWORD    EBP
  7947.  0Ch    DWORD    reserved (00h)
  7948.  10h    DWORD    EBX
  7949.  14h    DWORD    EDX
  7950.  18h    DWORD    ECX
  7951.  1Ch    DWORD    EAX
  7952.  20h    WORD    flags
  7953.  22h    WORD    ES
  7954.  24h    WORD    DS
  7955.  26h    WORD    FS
  7956.  28h    WORD    GS
  7957.  2Ah    WORD    IP
  7958.  2Ch    WORD    CS
  7959.  2Eh    WORD    SP
  7960.  30h    WORD    SS
  7961. --------E-310301-----------------------------
  7962. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  7963.     AX = 0301h
  7964.     BH = flags
  7965.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  7966.             reserved, must be 0 (DPMI 1.0+)
  7967.         others: reserved must be 0
  7968.     CX = number of words to copy from protected mode to real mode stack
  7969.     ES:(E)DI = selector:offset of real mode call structure
  7970.           (see #2403 at INT 31/AX=0300h)
  7971. Return: CF clear if successful
  7972.         real mode call structure modified (all fields except SS:SP, CS:IP
  7973.           filled with return values from real mode interrupt)
  7974.     CF set on error
  7975.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2398)
  7976.     protected mode stack unchanged
  7977. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  7978.     the real mode procedure must exit with a FAR return
  7979.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  7980.     the real mode handler must return with the stack in the same state as
  7981.       it was on being called
  7982. SeeAlso: AX=0300h,AX=0302h,AX=FF02h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  7983. SeeAlso: INT 2C/AX=0025h
  7984. --------E-310302-----------------------------
  7985. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  7986.     AX = 0302h
  7987.     BH = flags
  7988.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  7989.             reserved, must be 0 (DPMI 1.0+)
  7990.         others: reserved, must be 0
  7991.     CX = number of words to copy from protected mode to real mode stack
  7992.     ES:(E)DI = selector:offset of real mode call structure
  7993.           (see #2403 at INT 31/AX=0300h)
  7994. Return: CF clear if successful
  7995.         real mode call structure modified (all fields except SS:SP, CS:IP
  7996.           filled with return values from real mode interrupt)
  7997.     CF set on error
  7998.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2398)
  7999.     protected mode stack unchanged
  8000. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  8001.     the flags in the call structure are pushed on the real mode stack to
  8002.       form an interrupt stack frame, and the trace and interrupt flags are
  8003.       clear on entry to the handler
  8004.     the real mode procedure must exit with an IRET
  8005.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  8006.     the real mode handler must return with the stack in the same state as
  8007.       it was on being called
  8008. SeeAlso: AX=0300h
  8009. --------E-310303-----------------------------
  8010. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  8011.     AX = 0303h
  8012.     DS:(E)SI = selector:offset of procedure to call
  8013.     ES:(E)DI = selector:offset of real mode call structure (see #2403)
  8014. Return: CF clear if successful
  8015.         CX:DX = segment:offset of real mode call address (see #2404)
  8016.     CF set on error
  8017.         AX = error code (DPMI 1.0+) (8015h) (see #2398)
  8018. Notes:    the real mode call structure is static, causing reentrancy problems;
  8019.       its contents are only valid at the time of a callback
  8020.     the called procedure must modify the real mode CS:IP before returning
  8021.     values are returned to real mode by modifying the real mode call struc
  8022.     DPMI hosts must provide at least 16 callbacks per client
  8023.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  8024.       not support this function
  8025. SeeAlso: AX=0304h,AX=0C00h
  8026.  
  8027. (Table 2404)
  8028. Values DPMI real-mode callback procedure is called with:
  8029.     DS:(E)SI = selector:offset of real mode SS:SP
  8030.     ES:(E)DI = selector:offset of real mode call structure
  8031.     SS:(E)SP = locked protected mode API stack
  8032.     interrupts disabled
  8033. Return: (with IRET)
  8034.     ES:(E)DI = selector:offset of real mode call structure to restore
  8035. --------E-310304-----------------------------
  8036. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  8037.     AX = 0304h
  8038.     CX:DX = real mode callback address
  8039. Return: CF clear if successful
  8040.     CF set on error
  8041.         AX = error code (DPMI 1.0+) (8024h) (see #2398)
  8042. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  8043.       not support this function
  8044. SeeAlso: AX=0303h
  8045. --------E-310305-----------------------------
  8046. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  8047.     AX = 0305h
  8048. Return: CF clear
  8049.     AX = size in bytes of state buffer
  8050.     BX:CX = real mode address of procedure to save/restore state
  8051.     SI:(E)DI = protected mode procedure to save/restore state (see #2405)
  8052. Notes:    the buffer size will be zero if it is not necessary to preserve state
  8053.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  8054.     this function is only needed if using the raw mode switch service
  8055. SeeAlso: AX=0306h
  8056.  
  8057. (Table 2405)
  8058. Call DPMI state-save procedures with:
  8059.     AL = direction
  8060.         00h save state
  8061.         01h restore state
  8062.     ES:(E)DI -> state buffer
  8063. Return: all registers preserved
  8064. --------E-310306-----------------------------
  8065. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  8066.     AX = 0306h
  8067. Return: CF clear
  8068.     BX:CX -> procedure to switch from real to protected mode (see #2406)
  8069.     SI:(E)DI -> procedure to switch from protected to real mode
  8070. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  8071.     the caller must save and restore the state of the task with AX=0305h
  8072.     not supported by MS Windows 3.0 in Standard mode
  8073. SeeAlso: AX=0305h
  8074.  
  8075. (Table 2406)
  8076. Values to JUMP at mode-switch procedures with:
  8077.     AX = new DS
  8078.     CX = new ES
  8079.     DX = new SS
  8080.     (E)BX = new (E)SP
  8081.     SI:(E)DI = new CS:(E)IP
  8082. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  8083.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  8084.     interrupts will stay disabled during the entire mode switch if they
  8085.       are disabled on entry to the mode-switch procedure
  8086. --------E-310400-----------------------------
  8087. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  8088.     AX = 0400h
  8089. Return: CF clear
  8090.     AH = major version of DPMI spec supported
  8091.     AL = two-digit minor version of DPMI spec supported
  8092.     BX = DPMI host flags (see #2407)
  8093.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  8094.     DH = curr value of virtual master interrupt controller base interrupt
  8095.     DL = curr value of virtual slave interrupt controller base interrupt
  8096. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  8097.       release with fixes to CSD002 report version 0090h (0.144); this has
  8098.       reportedly been corrected in the Windows NT 3.5 beta
  8099. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 4B/AX=8102h/DX=0000h
  8100. SeeAlso: INT 67/AX=DE0Ah
  8101.  
  8102. Bitfields for DPMI host flags:
  8103. Bit(s)    Description    (Table 2407)
  8104.  0    running under an 80386 (32-bit) implementation
  8105.  1    processor returns to real mode for reflected interrupts instead of V86
  8106.       mode
  8107.  2    virtual memory supported
  8108.  3    reserved (undefined)
  8109.  4-15    reserved (zero)
  8110. --------E-310401-----------------------------
  8111. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  8112.     AX = 0401h
  8113.     ES:(E)DI -> 128-byte buffer for host description (see #2408)
  8114. Return: CF clear if successful
  8115.         AX = capabilities (see #2409)
  8116.         CX = reserved (00h)
  8117.         DX = reserved (00h)
  8118.         buffer filled
  8119.     CF set on error (DPMI 0.9 only)
  8120. SeeAlso: AX=0400h
  8121.  
  8122. Format of DPMI host description:
  8123. Offset    Size    Description    (Table 2408)
  8124.  00h    BYTE    host major version number
  8125.  01h    BYTE    host minor version number
  8126.  02h 126 BYTEs    ASCIZ host vendor name
  8127.  
  8128. Bitfields for DPMI capabilities:
  8129. Bit(s)    Description    (Table 2409)
  8130.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  8131.  1    exceptions restartability supported
  8132.  2    device mapping supported (see AX=0508h)
  8133.  3    conventional memory mapping supported (see AX=0509h)
  8134.  4    demand zero-fill supported
  8135.  5    write-protect client capability supported
  8136.  6    write-protect host capability supported
  8137.  7-15    reserved
  8138. --------E-310500-----------------------------
  8139. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  8140.     AX = 0500h
  8141.     ES:(E)DI -> buffer for memory information (see #2410)
  8142. Return: CF clear
  8143. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  8144.     this function must be considered advisory because other applications
  8145.       may affect the results at any time after the call
  8146.     fields not supported by the DPMI implementation are filled with
  8147.       FFFFFFFFh
  8148.     DPMI 1.0+ supports this function solely for backward compatibility; use
  8149.       AX=050Bh instead
  8150.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  8151.       returns the first field in the memory information record
  8152. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  8153.  
  8154. Format of DPMI memory information:
  8155. Offset    Size    Description    (Table 2410)
  8156.  00h    DWORD    largest available block in bytes
  8157.  04h    DWORD    maximum unlocked page allocation
  8158.  08h    DWORD    maximum locked page allocation
  8159.  0Ch    DWORD    total linear address space in pages
  8160.  10h    DWORD    total unlocked pages
  8161.  14h    DWORD    free pages
  8162.  18h    DWORD    total physical pages
  8163.  1Ch    DWORD    free linear address space in pages
  8164.  20h    DWORD    size of paging file/partition in pages
  8165.  24h 12 BYTEs    reserved
  8166. --------E-310501-----------------------------
  8167. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  8168.     AX = 0501h
  8169.     BX:CX = size in bytes
  8170. Return: CF clear if successful
  8171.         BX:CX = linear address of block
  8172.         SI:DI = memory block handle for resizing and freeing block
  8173.     CF set on error
  8174.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #2398)
  8175. Notes:    no selectors are allocated
  8176.     the memory block is allocated unlocked (can be locked with AX=0600h)
  8177.     allocations are often page granular (see AX=0604h)
  8178.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  8179.       for this function to fail even if AX=0500h indicates that enough
  8180.       memory is available
  8181. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  8182. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  8183. --------E-310502-----------------------------
  8184. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  8185.     AX = 0502h
  8186.     SI:DI = handle of memory block
  8187. Return: CF clear if successful
  8188.     CF set on error
  8189.         AX = error code (DPMI 1.0+) (8023h) (see #2398)
  8190. Note:    any selectors allocated for the memory block must also be freed,
  8191.       preferably before freeing the memory block
  8192. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  8193. --------E-310503-----------------------------
  8194. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  8195.     AX = 0503h
  8196.     BX:CX = new size in bytes (nonzero)
  8197.     SI:DI = handle of memory block
  8198. Return: CF clear if successful
  8199.         BX:CX = new linear address
  8200.         SI:DI = new handle of memory block
  8201.     CF set on error
  8202.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  8203.         (see #2398)
  8204. Notes:    any selectors pointing at the block must be updated
  8205.     the previous memory block handle becomes invalid
  8206.     an error is returned if the new size is 0
  8207. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  8208. --------E-310504-----------------------------
  8209. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  8210.     AX = 0504h
  8211.     EBX = page-aligned linear address of memory block (00000000h if any
  8212.           address is acceptable)
  8213.     ECX = size in bytes (nonzero)
  8214.     EDX = flags
  8215.         bit 0: set to create committed pages instead of uncommitted pages
  8216.         bits 1-31 reserved (0)
  8217. Return: CF clear if successful
  8218.         EBX = linear address of memory block
  8219.         ESI = memory block handle
  8220.     CF set on error
  8221.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #2398)
  8222. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8223. SeeAlso: AX=0501h,AX=0505h
  8224. --------E-310505-----------------------------
  8225. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  8226.     AX = 0505h
  8227.     ESI = memory block handle
  8228.     ECX = new size in bytes (nonzero)
  8229.     EDX = flags
  8230.         bit 0: create committed pages rather than uncommitted pages
  8231.         bit 1: segment descriptor update required
  8232.         ES:EBX -> buffer containing array of WORDs with selectors
  8233.         EDI = number of selectors in array
  8234.         bits 2-31 reserved (0)
  8235. Return: CF clear if successful
  8236.         EBX = new linear base address
  8237.         ESI = new memory block handle
  8238.     CF set on error
  8239.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #2398)
  8240. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8241.     the old memory block handle becomes invalid
  8242.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  8243.       all descriptors for selectors in the update buffer which fall within
  8244.       the memory block
  8245. SeeAlso: AX=0503h,AX=0504h
  8246. --------E-310506-----------------------------
  8247. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  8248.     AX = 0506h
  8249.     ESI = memory block handle
  8250.     EBX = offset in memory block of first page
  8251.     ECX = number of pages
  8252.     ES:EDX -> array of WORDs to hold page attributes (see #2411)
  8253. Return: CF clear if successful
  8254.         buffer filled
  8255.     CF set on error
  8256.         AX = error code (8001h,8023h,8025h) (see #2398)
  8257. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8258.     if EBX is not page-aligned, it will be rounded down
  8259. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  8260.  
  8261. Bitfields for DPMI page attribute word:
  8262. Bit(s)    Description    (Table 2411)
  8263.  0-2    page type
  8264.     000 uncommitted
  8265.     001 committed
  8266.     010 mapped (see AX=0508h,AX=0509h)
  8267.     other currently unused
  8268.  3    page is read/write rather than read-only
  8269.  4    accessed/dirty bits supplied in bits 5 and 6
  8270.  5    page has been accessed (only valid if bit 4 set)
  8271.  6    page has been written (only valid if bit 4 set)
  8272.  7-15    reserved (0)
  8273. --------E-310507-----------------------------
  8274. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  8275.     AX = 0507h
  8276.     ESI = memory block handle
  8277.     EBX = offset in memory block of first page
  8278.     ECX = number of pages
  8279.     ES:EDX -> array of WORDs with new page attributes (see #2411)
  8280. Return: CF clear if successful
  8281.     CF set on error
  8282.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  8283.         (see #2398)
  8284.         ECX = number of pages which have been set
  8285. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8286.     if EBX is not page-aligned, it will be rounded down
  8287. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  8288. --------E-310508-----------------------------
  8289. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  8290.     AX = 0508h
  8291.     ESI = memory block handle
  8292.     EBX = page-aligned offset within memory block of page(s) to be mapped
  8293.     ECX = number of pages to map
  8294.     EDX = page-aligned physical address of device
  8295. Return: CF clear if successful
  8296.     CF set on error
  8297.         AX = error code (8001h,8003h,8023h,8025h) (see #2398)
  8298. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8299.     support of this function is optional; hosts are also allowed to support
  8300.       the function for some devices but not others
  8301. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  8302. --------E-310509-----------------------------
  8303. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  8304.     AX = 0509h
  8305.     ESI = memory block handle
  8306.     EBX = page-aligned offset within memory block of page(s) to map
  8307.     ECX = number of pages to map
  8308.     EDX = page-aligned linear address of conventional (below 1M) memory
  8309. Return: CF clear if successful
  8310.     CF set on error
  8311.         AX = error code (8001h,8003h,8023h,8025h) (see #2398)
  8312. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  8313.     support of this function is optional
  8314. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  8315. --------E-31050A-----------------------------
  8316. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  8317.     AX = 050Ah
  8318.     SI:DI = memory block handle
  8319. Return: CF clear if successful
  8320.         SI:DI = size in bytes
  8321.         BX:CX = base address
  8322.     CF set on error
  8323.         AX = error code (8023h) (see #2398)
  8324. SeeAlso: AX=0501h,AX=0504h
  8325. --------E-31050B-----------------------------
  8326. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  8327.     AX = 050Bh
  8328.     ES:(E)DI -> 128-byte buffer for memory information (see #2412)
  8329. Return: CF clear if successful
  8330.     CF set on error (DPMI 0.9 only)
  8331. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  8332. SeeAlso: AX=0500h
  8333.  
  8334. Format of DPMI memory information:
  8335. Offset    Size    Description    (Table 2412)
  8336.  00h    DWORD    total allocated bytes of physical memory controlled by host
  8337.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  8338.  08h    DWORD    total available bytes of virtual memory controlled by host
  8339.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  8340.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  8341.  14h    DWORD    total allocated bytes of virtual memory for current client
  8342.  18h    DWORD    total available bytes of virtual memory for current client
  8343.  1Ch    DWORD    total locked bytes for current client
  8344.  20h    DWORD    maximum locked bytes for current client
  8345.  24h    DWORD    highest linear address available to current client
  8346.  28h    DWORD    largest available memory block in bytes
  8347.  2Ch    DWORD    minimum allocation unit in bytes
  8348.  30h    DWORD    allocation alignment unit size in bytes
  8349.  34h 76 BYTEs    reserved (00h)
  8350. --------E-310600-----------------------------
  8351. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  8352.     AX = 0600h
  8353.     BX:CX = starting linear address
  8354.     SI:DI = size of region in bytes
  8355. Return: CF clear if successful
  8356.     CF set on error
  8357.         none of the memory is locked
  8358.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #2398)
  8359. Notes:    pages at beginning and end will be locked if the region overlaps them
  8360.     may be called multiple times for a given page; the DPMI host keeps a
  8361.       lock count for each page
  8362. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  8363. --------E-310601-----------------------------
  8364. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  8365.     AX = 0601h
  8366.     BX:CX = starting linear address
  8367.     SI:DI = size of region in bytes
  8368. Return: CF clear if successful
  8369.     CF set on error
  8370.         none of the memory is unlocked
  8371.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #2398)
  8372. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  8373.     memory whose lock count has not reached zero remains locked
  8374. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  8375. --------E-310602-----------------------------
  8376. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  8377.     AX = 0602h
  8378.     BX:CX = starting linear address
  8379.     SI:DI = size of region in bytes
  8380. Return: CF clear if successful
  8381.     CF set on error
  8382.         none of the memory is made pageable
  8383.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #2398)
  8384. Notes:    must relock all unlocked real mode memory before terminating process
  8385.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  8386.     pages at beginning and end will be unlocked if the region overlaps them
  8387.     pageability of real mode pages is binary, not a count
  8388. SeeAlso: AX=0600h,AX=0603h
  8389. --------E-310603-----------------------------
  8390. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  8391.     AX = 0603h
  8392.     BX:CX = starting linear address
  8393.     SI:DI = size of region in bytes
  8394. Return: CF clear if successful
  8395.     CF set on error
  8396.         none of the memory is relocked
  8397.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #2398)
  8398. Notes:    pages at beginning and end will be relocked if the region overlaps them
  8399.     pageability of real mode pages is binary, not a count
  8400. SeeAlso: AX=0602h
  8401. --------E-310604-----------------------------
  8402. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  8403.     AX = 0604h
  8404. Return: CF clear if successful
  8405.         BX:CX = page size in bytes
  8406.     CF set on error
  8407.         AX = error code (DPMI 1.0+) (see also #2398)
  8408.         8001h unsupported, 16-bit host
  8409. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  8410.       unchanged
  8411. --------E-310700-----------------------------
  8412. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  8413.     AX = 0700h
  8414.     BX:CX = starting linear page number
  8415.     SI:DI = number of pages to mark as paging candidates
  8416. Return: ???
  8417. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  8418.       specification, this function is called by MS Windows TASKMAN,
  8419.       PROGMAN, and KERNEL
  8420. SeeAlso: AX=0701h,AX=0702h
  8421. --------E-310701-----------------------------
  8422. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  8423.     AX = 0701h
  8424.     BX:CX = starting linear page number
  8425.     SI:DI = number of pages to discard
  8426. Return: ???
  8427. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  8428.       specification, this function is called by MS Windows TASKMAN,
  8429.       PROGMAN, and KERNEL
  8430. SeeAlso: AX=0700h,AX=0703h
  8431. --------E-310702-----------------------------
  8432. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  8433.     AX = 0702h
  8434.     BX:CX = starting linear address
  8435.     SI:DI = number of bytes to mark as paging candidates
  8436. Return: CF clear if successful
  8437.     CF set on error
  8438.         AX = error code (DPMI 1.0+) (8025h) (see #2398)
  8439. Notes:    this function is advisory, and does not force immediate paging
  8440.     partial pages will not be discarded
  8441. SeeAlso: AX=0700h,AX=0703h
  8442. --------E-310703-----------------------------
  8443. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  8444.     AX = 0703h
  8445.     BX:CX = starting linear address
  8446.     SI:DI = number of bytes to mark as discarded
  8447. Return: CF clear if successful
  8448.     CF set on error
  8449.         AX = error code (DPMI 1.0+) (8025h) (see #2398)
  8450. Notes:    this function is advisory, and may be ignored by DPMI implementations
  8451.     partial pages will not be discarded
  8452. SeeAlso: AX=0701h,AX=0702h
  8453. --------E-310800-----------------------------
  8454. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  8455.     AX = 0800h
  8456.     BX:CX = physical address (should be above 1 MB)
  8457.     SI:DI = size in bytes
  8458. Return: CF clear if successful
  8459.         BX:CX = linear address which maps the requested physical memory
  8460.     CF set on error
  8461.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #2398)
  8462. Notes:    implementations may refuse this call because it can circumvent protects
  8463.     the caller must build an appropriate selector for the memory
  8464.     do not use for memory mapped in the first megabyte
  8465. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  8466. --------E-310801-----------------------------
  8467. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  8468.     AX = 0801h
  8469.     BX:CX = linear address returned by AX=0800h
  8470. Return: CF clear if successful
  8471.     CF set on error
  8472.         AX = error code (8025h) (see #2398)
  8473. Note:    should be called at end of access to device mapped with AX=0800h
  8474. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  8475. --------E-310900-----------------------------
  8476. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  8477.     AX = 0900h
  8478. Return: CF clear
  8479.     virtual interrupts disabled
  8480.     AL = previous interrupt state (00h disabled, 01h enabled)
  8481.     AH preserved
  8482. Notes:    the previous state may be restored simply by executing another INT 31
  8483.     a CLI instruction may be used if the previous state is unimportant,
  8484.       but should be assumed to be very slow due to trapping by the host
  8485. SeeAlso: AX=0901h,AX=0902h
  8486. --------E-310901-----------------------------
  8487. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  8488.     AX = 0901h
  8489. Return: CF clear
  8490.     virtual interrupts enabled
  8491.     AL = previous interrupt state (00h disabled, 01h enabled)
  8492.     AH preserved
  8493. Notes:    the previous state may be restored simply by executing another INT 31
  8494.     a STI instruction may be used if the previous state is unimportant,
  8495.       but should be assumed to be very slow due to trapping by the host
  8496. SeeAlso: AX=0900h,AX=0902h
  8497. --------E-310902-----------------------------
  8498. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  8499.     AX = 0902h
  8500. Return: CF clear
  8501.     AL = current interrupt state (00h disabled, 01h enabled)
  8502. Note:    should be used rather than PUSHF because that instruction yields the
  8503.       physical interrupt state rather than the per-client virtualized
  8504.       interrupt flag
  8505. SeeAlso: AX=0900h,AX=0901h
  8506. --------E-310A00-----------------------------
  8507. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  8508.     AX = 0A00h
  8509.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  8510. Return: CF clear if successful
  8511.         ES:(E)DI -> FAR extended API entry point
  8512.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  8513.     CF set on error
  8514.         AX = error code (DPMI 1.0+) (8001h) (see #2398)
  8515. Notes:    extended API parameters are vendor-specific
  8516.     DPMI 1.0+ supports this function solely for backward compatibility; use
  8517.       INT 2F/AX=168Ah instead
  8518.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  8519.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  8520.       386MAX v7.01.
  8521. SeeAlso: INT 2F/AX=168Ah
  8522. --------E-310B00-----------------------------
  8523. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  8524.     AX = 0B00h
  8525.     BX:CX = linear address
  8526.     DL = size (1,2,4 bytes)
  8527.     DH = type (00h execute, 01h write, 02h read/write)
  8528. Return: CF clear if successful
  8529.         BX = watchpoint handle
  8530.     CF set on error
  8531.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #2398)
  8532. SeeAlso: AX=0212h,AX=0601h
  8533. --------E-310B01-----------------------------
  8534. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  8535.     AX = 0B01h
  8536.     BX = watchpoint handle
  8537. Return: CF clear if successful
  8538.     CF set on error
  8539.         AX = error code (DPMI 1.0+) (8023h) (see #2398)
  8540. Note:    the watchpoint handle is freed
  8541. SeeAlso: AX=0B00h
  8542. --------E-310B02-----------------------------
  8543. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  8544.     AX = 0B02h
  8545.     BX = watchpoint handle
  8546. Return: CF clear if successful
  8547.         AX = status flags
  8548.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  8549.     CF set on error
  8550.         AX = error code (DPMI 1.0+) (8023h) (see #2398)
  8551. SeeAlso: AX=0B00h,AX=0B03h
  8552. --------E-310B03-----------------------------
  8553. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  8554.     AX = 0B03h
  8555.     BX = watchpoint handle
  8556. Return: CF clear if successful
  8557.     CF set on error
  8558.         AX = error code (DPMI 1.0+) (8023h) (see #2398)
  8559. SeeAlso: AX=0B02h
  8560. --------E-310C00-----------------------------
  8561. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  8562.     AX = 0C00h
  8563.     ES:(E)DI -> resident service provider structure (see #2413)
  8564. Return: CF clear if successful
  8565.     CF set on error
  8566.         AX = error code (8015h,8021h,8025h) (see #2398 at AX=0000h)
  8567. Note:    calling this function declares an intent to provide resident
  8568.       protected mode services after terminating with AX=0C01h
  8569. SeeAlso: AX=0303h,AX=0C01h
  8570.  
  8571. Format of DPMI resident service provider structure:
  8572. Offset    Size    Description    (Table 2413)
  8573.  00h    QWORD    descriptor for 16-bit data segment
  8574.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  8575.  10h    WORD    offset of 16-bit callback procedure
  8576.  12h  2 BYTEs    reserved
  8577.  14h    QWORD    descriptor for 32-bit data segment
  8578.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  8579.  24h    DWORD    offset of 32-bit callback procedure
  8580. --------E-310C01-----------------------------
  8581. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  8582.     AX = 0C01h
  8583.     BL = return code
  8584.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  8585. Return: never
  8586. Notes:    should only be used if the program will only provide services to
  8587.       other DPMI programs
  8588.     any protected mode memory remains allocated to the program unless
  8589.       explicitly freed before this call
  8590.     must first call AX=0C00h or program will simply be terminated
  8591. SeeAlso: AX=0C00h,INT 21/AH=31h
  8592. --------E-310D00-----------------------------
  8593. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  8594.     AX = 0D00h
  8595.     ES:(E)DI -> shared memory allocation request structure (see #2414)
  8596. Return: CF clear if successful
  8597.         request structure updated
  8598.     CF set on error
  8599.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #2398)
  8600. Note:    first 16 bytes of memory block will be initialized to zeros on the
  8601.       first allocation
  8602. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  8603.  
  8604. Format of DPMI shared memory allocation request structure:
  8605. Offset    Size    Description    (Table 2414)
  8606.  00h    DWORD    requested length of shared memory block in bytes
  8607.  04h    DWORD    (ret) allocated length of block
  8608.  08h    DWORD    (ret) shared memory handle
  8609.  0Ch    DWORD    (ret) linear address of memory block
  8610.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  8611.         (name max 128 bytes)
  8612.  16h  2 BYTEs    reserved
  8613.  18h  4 BYTEs    reserved (00h)
  8614. --------E-310D01-----------------------------
  8615. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  8616.     AX = 0D01h
  8617.     SI:DI = shared memory block handle
  8618. Return: CF clear if successful
  8619.     CF set on error
  8620.         AX = error code (8023h) (see #2398)
  8621. Notes:    handle becomes invalid after this call
  8622.     DPMI maintains separate global and virtual machine use counts for each
  8623.       shared memory block; when the global use counts reaches zero, the
  8624.       block is finally destroyed
  8625. SeeAlso: AX=0502h,AX=0D00h
  8626. --------E-310D02-----------------------------
  8627. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  8628.     AX = 0D02h
  8629.     SI:DI = shared memory block handle
  8630.     DX = flags
  8631.         bit 0: return immediately rather than suspending if serialization
  8632.           unavailable
  8633.         bit 1: shared rather than exclusive serialization
  8634.         bits 2-15 reserved (0)
  8635. Return: CF clear if successful
  8636.     CF set on error
  8637.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #2398)
  8638. Notes:    an exclusive serialization blocks any other serialization attempts for
  8639.       the same block by another virtual machine; a shared serialization
  8640.       blocks attempts at exclusive serialization by another virtual machine
  8641.     hosts are not required to detect deadlock
  8642.     a client's interrupt handler can cancel a serialization call which
  8643.       caused it to block by calling AX=0D03h
  8644. SeeAlso: AX=0D00h,AX=0D03h
  8645. --------E-310D03-----------------------------
  8646. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  8647.     AX = 0D03h
  8648.     SI:DI = shared memory block handle
  8649.     DX = flags
  8650.         bit 0: release shared serialization rather than exclusive serialztn
  8651.         bit 1: free pending serialization
  8652.         bits 2-15 reserved (0)
  8653. Return: CF clear if successful
  8654.     CF set on error
  8655.         AX = error code (8002h,8023h) (see #2398 at AX=0000h)
  8656. SeeAlso: AX=0D00h,AX=0D02h
  8657. --------E-310E00-----------------------------
  8658. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  8659.     AX = 0E00h
  8660. Return: CF clear
  8661.     AX = coprocessor status (see #2415)
  8662. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  8663. SeeAlso: AX=0E01h
  8664.  
  8665. Bitfields for DPMI coprocessor status:
  8666. Bit(s)    Description    (Table 2415)
  8667.  0    numeric coprocessor enabled for current client
  8668.  1    client is emulating coprocessor
  8669.  2    numeric coprocessor is present
  8670.  3    host is emulating coprocessor instructions
  8671.  4-7    coprocessor type
  8672.     0000 none
  8673.     0010 80287
  8674.     0011 80387
  8675.     0100 80486 with numeric coprocessor
  8676.     other reserved
  8677.  8-15    not used
  8678. --------E-310E01-----------------------------
  8679. INT 31 P - DPMI 1.0+ - SET EMULATION
  8680.     AX = 0E01h
  8681.     BX = coprocessor flag bits (see #2416)
  8682. Return: CF clear if successful
  8683.     CF set on error
  8684.         AX = error code (8026h) (see #2398 at AX=0000h)
  8685. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  8686. SeeAlso: AX=0E00h
  8687.  
  8688. Bitfields for DPMI coprocessor flags:
  8689. Bit(s)    Description    (Table 2416)
  8690.  0    enable numeric coprocessor for current client
  8691.  1    client will emulate coprocessor
  8692.  2-15    not used
  8693. --------E-3157-------------------------------
  8694. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  8695.     AH = 57h
  8696.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  8697.     ???
  8698. Return: ???
  8699. SeeAlso: INT 2C/AX=0000h"Cloaking"
  8700. --------E-315702-----------------------------
  8701. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  8702.     AX = 5702h
  8703.     DX = PSP segment of caller
  8704.     STACK: WORD    ???
  8705.            WORD    flags (bit 0 set if 32-bit program)
  8706. Return: as for DPMI mode-switch entry point (see #2001 at INT 2F/AX=1687h)
  8707. Note:    this function is called by the real-mode DPMI mode-switch entry point
  8708. SeeAlso: INT 2F/AX=1687h
  8709. --------E-31EE00------------------------
  8710. INT 31 - DOS32 v3.0+ - GET DOS32 VERSION AND SELECTOR VALUES
  8711.     AX = EE00h
  8712. Return: AL = minor version (BCD)
  8713.     AH = major version (BCD)
  8714.     DL = system type (1=raw DOS, 2=XMS, 4=VCPI, 8=DPMI)
  8715.     BX = selector of 4GB data segment with zero base address
  8716. Program: DOS32 is a 32 bit DOS extender by Adam Seychell.
  8717. SeeAlso: AX=EE02h
  8718. --------E-31EE02------------------------
  8719. INT 31 - DOS32 v3.0+ - GET DOS32 ADDRESS INFORMATION
  8720.     AX = EE02h
  8721. Return: AX = real-mode segment of temporary 8K buffer (v3.1+)
  8722.     EBX = 32bit linear address of the program segment
  8723.     EDX = Total size in bytes of the programs .EXE file after linking.
  8724.     ESI = offset address of PSP
  8725.     EDI = offset address of program environment
  8726.     ECX = offset address of the program's .EXE ASCIZ file name and path
  8727. SeeAlso: AX=EE00h,AX=EE20h
  8728. --------E-31EE10------------------------
  8729. INT 31 - DOS32 v3.2+ - SET UP A DOS32 LOADABLE LIBRARY
  8730.     AX = EE10h
  8731.     EDX -> library ASCIZ path\filename
  8732.     EBX = number of bytes to seek from beginning of file
  8733. Return: CF clear if successful
  8734.         EAX = size of memory block required to store library
  8735.         EBX = size of library file
  8736.     CF set on error
  8737.         AL = error code.
  8738.         01h error opening or reading file
  8739.         02h bad DOS32 library file
  8740. SeeAlso: AX=EE00h,AX=EE11h
  8741. --------E-31EE11------------------------
  8742. INT 31 - DOS32 v3.2+ - LOAD LIBRARY FILE
  8743.     AX = EE11h
  8744.     EDX -> near pointer of memory block to store library
  8745. Return: CF clear if successful
  8746.         EDX = near pointer to the dynamic library public
  8747.     CF set on error
  8748. Note:    must first successfuly call function AX=EE10h before calling this
  8749.       function
  8750. SeeAlso: AX=EE00h,AX=EE10h
  8751. --------E-31EE20------------------------
  8752. INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH RETF STACK FRAME
  8753.     AX = EE20h
  8754.     ESI = offset of the real mode call back function
  8755. Return: CF clear if successful
  8756.         CX:DX = real mode address to call up to the protected mode
  8757.           procedure
  8758.     CF set on error
  8759. SeeAlso: AX=EE00h,AX=EE02h,AX=EE21h
  8760. --------E-31EE21------------------------
  8761. INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH IRET STACK FRAME
  8762.     AX = EE21h
  8763.     ESI = offset of the real mode call back function
  8764. Return: CF clear if successful
  8765.         CX:DX = real mode address to call up to the protected mode
  8766.           procedure
  8767.     CF set on error
  8768. SeeAlso: AX=EE20h
  8769. --------E-31EE30------------------------
  8770. INT 31 - DOS32 v3.0+ - TERMINATE AND STAY RESIDENT
  8771.     AX = EE30h
  8772. SeeAlso: AX=EE21h,AX=EE40h,INT 21/AH=31h
  8773. --------E-31EE40------------------------
  8774. INT 31 - DOS32 v3.0+ - UNDO PREVIOUS MEMORY ALLOCATION or DMA BUFFER
  8775.     AX = EE40h
  8776. Return: CF clear if successful
  8777.     CF set on error
  8778. SeeAlso: AX=EE41h,AX=EE42h
  8779. --------E-31EE41------------------------
  8780. INT 31 - DOS32 v3.0+ - ALLOCATE 16KB DMA BLOCK
  8781.     AX = EE41h
  8782. Return: CF clear if successful
  8783.         EBX -> 16KB DMA block (physical address)
  8784.         EDX -> 16KB DMA block (offset address)
  8785.     CF set on error
  8786. SeeAlso: AX=EE40h,AX=EE42h
  8787. --------E-31EE42------------------------
  8788. INT 31 - DOS32 v3.0+ - ALLOCATE MEMORY BLOCK
  8789.     AX = EE42h
  8790.     EDX = size in bytes
  8791. Return: CF clear if successful
  8792.         EAX = size in bytes
  8793.         EDX -> memory block
  8794.     CF set on error
  8795. Note:    size is rounded off to the next 4KB boundary
  8796. SeeAlso: AX=EE40h,AX=EE41h
  8797. --------E-31FF00-----------------------------
  8798. INT 31 P - CauseWay - "Info" - GET SYSTEM SELECTORS/FLAGS
  8799.     AX = FF00h
  8800. Return: AX = selector for flag address space (base 00000000h, limit 4GB)
  8801.     BX = selector for current PSP segment (limit 0100h)
  8802.     (E)CX = size of DOS transfer buffer (max 64K)
  8803.     DX = real-mode segment address of DOS transfer buffer
  8804.     ES:(E)SI = protected-mode address of DOS transfer buffer
  8805.     EDI = system flags (see #2417)
  8806. Program: CauseWay is a 386 DOS extender by Michael Devore and John Wildsmith
  8807.       for use with Watcom C++ or assembly language programs
  8808. Notes:    the entire transfer buffer can be addressed with a 16-bit offset in
  8809.       protected mode
  8810.     CauseWay always maps selector 0040h to the BIOS data segment at
  8811.       real-mode segment 0040h; when not running under a DPMI host, CauseWay
  8812.       also provides selectors A000h, B000h, and B800h mapped to video
  8813.       memory
  8814. SeeAlso: AX=FF25h
  8815.  
  8816. Bitfields for CauseWay system flags:
  8817. Bit(s)    Description    (Table 2417)
  8818.  0    32-bit code
  8819.  1    virtual memory manage enabled
  8820.  3-2    mode: 00 raw extended memory, 01 VCPI, 10 DPMI
  8821.  4    DPMI available
  8822.  5    VCPI available
  8823.  6    no memory managers
  8824.  7    application descriptor table type: 0 = GDT, 1 = LDT
  8825.  14-8    reserved
  8826.  15    debugging engine present
  8827. --------E-31FF01-----------------------------
  8828. INT 31 P - CauseWay - "IntXX" - SIMULATE REAL-MODE INTERRUPT
  8829.     AX = FF01h
  8830.     BL = interrupt number
  8831.     ES:(E)DI -> real-mode register list (see #2403 at AX=0300h)
  8832. Return: register list updated
  8833. Note:    CauseWay fills in the values for SS, SP, and FLAGS itself, and ignores
  8834.       the values specified for CS and IP
  8835. SeeAlso: AX=0300h,AX=FF02h
  8836. --------E-31FF02-----------------------------
  8837. INT 31 P - CauseWay - "FarCallReal" - SIMULATE REAL-MODE FAR CALL
  8838.     AX = FF02h
  8839.     ES:(E)DI -> real-mode register list (see #2403 at AX=0300h)
  8840. Return: register list updated
  8841. SeeAlso: AX=0301h,AX=FF01h
  8842. --------E-31FF03-----------------------------
  8843. INT 31 P - CauseWay - "GetSel" - ALLOCATE NEW SELECTOR
  8844.     AX = FF03h
  8845. Return: CF clear if successful
  8846.         BX = new selector
  8847.     CF set on error
  8848. Note:    the new selector is initialized with a base address of 000000h, a limit
  8849.       of 0000h, and attributes read/write expand-up data
  8850. SeeAlso: AX=FF04h,AX=FF05h,AX=FF06h
  8851. --------E-31FF04-----------------------------
  8852. INT 31 P - CauseWay - "RelSel" - RELEASE A SELECTOR
  8853.     AX = FF04h
  8854.     BX = selector
  8855. Return: CF clear if successful
  8856.     CF set on error
  8857. SeeAlso: AX=FF03h,AX=FF06h
  8858. --------E-31FF05-----------------------------
  8859. INT 31 P - CauseWay - "CodeSel" - CONVERT SELECTOR TO EXECUTABLE CODE SELECTOR
  8860.     AX = FF05h
  8861.     BX = selector
  8862.     CL = default operation size (00h = 16-bit, 01h = 32-bit)
  8863. Return: CF clear if successful
  8864.     CF set on error
  8865. SeeAlso: AX=FF03h
  8866. --------E-31FF06-----------------------------
  8867. INT 31 P - CauseWay - "AliasSel" - CREATE READ/WRITE DATA ALIAS SELECTOR
  8868.     AX = FF06h
  8869.     BX = original selector
  8870. Return: CF clear if successful
  8871.         AX = new data selector aliasing original selector
  8872.     CF set on error
  8873. SeeAlso: AX=FF03h,AX=FF04h
  8874. --------E-31FF07-----------------------------
  8875. INT 31 P - CauseWay - "GetSelDet" - GET SELECTOR BASE AND LIMIT
  8876.     AX = FF07h
  8877.     BX = selector
  8878. Return: CF clear if successful
  8879.         CX:DX = base address
  8880.         SI:DI = limit (bytes)
  8881.     CF set on error
  8882. SeeAlso: AX=FF08h,AX=FF09h
  8883. --------E-31FF08-----------------------------
  8884. INT 31 P - CauseWay - "GetSelDet32" - GET SELECTOR BASE AND LIMIT (32-bit)
  8885.     AX = FF08h
  8886. Return: CF clear if successful
  8887.         EDX = base address
  8888.         ECX = limit (bytes)
  8889.     CF set on error
  8890. SeeAlso: AX=FF07h,AX=FF0Ah
  8891. --------E-31FF09-----------------------------
  8892. INT 31 P - CauseWay - "SetSelDet" - SET SELECTOR BASE AND LIMIT
  8893.     AX = FF09h
  8894.     BX = selector
  8895.     CX:DX = new base address
  8896.     SI:DI = new byte-granular limit
  8897. Return: CF clear if successful
  8898.     CF set on error
  8899. SeeAlso: AX=FF07h,AX=FF0Ah
  8900. --------E-31FF0A-----------------------------
  8901. INT 31 P - CauseWay - "SetSelDet32" - SET SELECTOR BASE AND LIMIT (32-bit)
  8902.     AX = FF0Ah
  8903.     BX = selector
  8904.     EDX = new base address
  8905.     ECX = new byte-granular limit
  8906. Return: CF clear if successful
  8907.     CF set on error
  8908. SeeAlso: AX=FF08h,AX=FF09h
  8909. --------E-31FF0B-----------------------------
  8910. INT 31 P - CauseWay - "GetMem" - ALLOCATE BLOCK OF MEMORY
  8911.     AX = FF0Bh
  8912.     CX:DX = size in bytes (FFFFh:FFFFh to get size of largest available)
  8913. Return: CF clear if successful
  8914.         BX = selector for accessing block if requested size not FFFFh:FFFFh
  8915.         CX:DX = size of largest available block if requested FFFFh:FFFFh
  8916.     CF set on error
  8917. SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF0Fh,AX=FF10h,AX=FF2Ch
  8918. --------E-31FF0C-----------------------------
  8919. INT 31 P - CauseWay - "GetMem32" - ALLOCATE BLOCK OF MEMORY (32-bit)
  8920.     AX = FF0Ch
  8921.     ECX = size in bytes (FFFFFFFFh to get size of largest available block)
  8922. Return: CF clear if successful
  8923.         BX = selector for accessing block if requested size not FFFFh:FFFFh
  8924.         ECX = size of largest available block if requested FFFFh:FFFFh
  8925.     CF set on error
  8926. SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF0Fh,AX=FF11h
  8927. --------E-31FF0D-----------------------------
  8928. INT 31 P - CauseWay - "ResMem" - RESIZE MEMORY BLOCK
  8929.     AX = FF0Dh
  8930.     BX = selector for block to be resized
  8931.     CX:DX = new size in bytes
  8932. Return: CF clear if successful
  8933.     CF set on error
  8934. Note:    the memory block may have to be copied to another location in order
  8935.       to satisfy the requested new size, in which case the base address
  8936.       of the selector is updated
  8937. SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF12h
  8938. --------E-31FF0E-----------------------------
  8939. INT 31 P - CauseWay - "ResMem32" - RESIZE MEMORY BLOCK (32-bit)
  8940.     AX = FF0Eh
  8941.     BX = selector for block to be resized
  8942.     ECX = new size in bytes
  8943. Return: CF clear if successful
  8944.     CF set on error
  8945. Note:    the memory block may have to be copied to another location in order
  8946.       to satisfy the requested new size, in which case the base address
  8947.       of the selector is updated
  8948. SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF13h
  8949. --------E-31FF0F-----------------------------
  8950. INT 31 P - CauseWay - "RelMem" - RELEASE PREVIOUSLY ALLOCATED MEMORY
  8951.     AX = FF0Fh
  8952.     BX = selector for block to be released
  8953. Return: CF clear if successful
  8954.     CF set on error
  8955. SeeAlso: AX=FF0Bh,AX=FF0Ch,AX=FF14h
  8956. --------E-31FF10-----------------------------
  8957. INT 31 P - CauseWay - "GetMemLinear" - ALLOCATE MEMORY WITHOUT SELECTOR
  8958.     AX = FF10h
  8959.     CX:DX = size of block in bytes
  8960. Return: CF clear if successful
  8961.         SI:DI = linear address of allocated block
  8962.     CF set on error
  8963. Note:    this function may return addresses above 16M
  8964. SeeAlso: AX=FF0Bh,AX=FF11h,AX=FF12h,AX=FF14h
  8965. --------E-31FF11-----------------------------
  8966. INT 31 P - CauseWay - "GetMemLinear32" - ALLOCATE MEMORY WITHOUT SELECTOR
  8967.     AX = FF11h
  8968.     ECX = size of block in bytes
  8969. Return: CF clear if successful
  8970.         ESI = linear address of allocated block
  8971.     CF set on error
  8972. Note:    this function may return addresses above 16M
  8973. SeeAlso: AX=FF0Ch,AX=FF10h,AX=FF13h,AX=FF14h
  8974. --------E-31FF12-----------------------------
  8975. INT 31 P - CauseWay - "ResMemLinear" - RESIZE LINEAR MEMORY BLOCK
  8976.     AX = FF12h
  8977.     CX:DX = new size in bytes
  8978.     SI:DI = linear address of block to be resized
  8979. Return: CF clear if successful
  8980.        SI:DI = new linear address of block
  8981.     CF set on error
  8982. SeeAlso: AX=FF0Dh,AX=FF10h,AX=FF13h
  8983. --------E-31FF13-----------------------------
  8984. INT 31 P - CauseWay - "ResMemLinear32" - RESIZE LINEAR MEMORY BLOCK (32-bit)
  8985.     AX = FF13h
  8986.     ECX = new size in bytes
  8987.     ESI = linear address of block to be resized
  8988. Return: CF clear if successful
  8989.        ESI = new linear address of block
  8990.     CF set on error
  8991. SeeAlso: AX=FF0Eh,AX=FF11h,AX=FF12h
  8992. --------E-31FF14-----------------------------
  8993. INT 31 P - CauseWay - "RelMemLinear" - RELEASE LINEAR MEMORY BLOCK
  8994.     AX = FF14h
  8995.     SI:DI = linear address of block to be released
  8996. Return: CF clear if successful
  8997.     CF set on error
  8998. SeeAlso: AX=FF0Fh,AX=FF10h,AX=FF15h
  8999. --------E-31FF15-----------------------------
  9000. INT 31 P - CauseWay - "RelMemLinear32" - RELEASE LINEAR MEMORY BLOCK (32-bit)
  9001.     AX = FF15h
  9002.     ESI = linear address of block to be released
  9003. Return: CF clear if successful
  9004.     CF set on error
  9005. SeeAlso: AX=FF0Fh,AX=FF11h,AX=FF15h
  9006. --------E-31FF16-----------------------------
  9007. INT 31 P - CauseWay - "GetMemNear" - ALLOCATE APPLICATION-RELATIVE MEMORY
  9008.     AX = FF16h
  9009.     EBX = size in bytes of block to allocate
  9010. Return: CF clear if successful
  9011.        ESI = application-relative linear address of allocated block
  9012.     CF set on error
  9013. SeeAlso: AX=FF17h,AX=FF18h,AX=FF19h
  9014. --------E-31FF17-----------------------------
  9015. INT 31 P - CauseWay - "ResMemNear" - RESIZE APPLICATION-RELATIVE MEMORY BLOCK
  9016.     AX = FF17h
  9017.     EBX = size in bytes of block to allocate
  9018.     ESI = application-relative linear address of block
  9019. Return: CF clear if successful
  9020.         ESI = new application-relative linear address of block
  9021.     CF set on error
  9022. SeeAlso: AX=FF16h,AX=FF18h,AX=FF19h
  9023. --------E-31FF18-----------------------------
  9024. INT 31 P - CauseWay - "RelMemNear" - RELEASE APPLICATION-RELATIVE MEMORY BLOCK
  9025.     AX = FF18h
  9026.     ESI = application-relative linear address of block
  9027. Return: CF clear if successful
  9028.     CF set on error
  9029. SeeAlso: AX=FF16h,AX=FF17h,AX=FF19h
  9030. --------E-31FF19-----------------------------
  9031. INT 31 P - CauseWay - "Linear2Near" - CONVERT LINEAR TO APP-RELATIVE ADDRESS
  9032.     AX = FF19h
  9033.     ESI = linear address
  9034. Return: ESI = application-relative linear address
  9035. SeeAlso: AX=FF1Ah
  9036. --------E-31FF1A-----------------------------
  9037. INT 31 P - CauseWay - "Near2Linear" - CONVERT APP-RELATIVE TO LINEAR ADDRESS
  9038.     AX = FF1Ah
  9039.     ESI = application-relative linear address
  9040. Return: ESI = linear address
  9041. SeeAlso: AX=FF19h
  9042. --------E-31FF1B-----------------------------
  9043. INT 31 P - CauseWay - "LockMem" - LOCK REGION OF MEMORY
  9044.     AX = FF1Bh
  9045.     BX:CX = starting linear address
  9046.     SI:DI = size of region in bytes
  9047. Return: CF clear if successful
  9048.     CF set on error
  9049. Desc:    prevent memory from being swapped out by the virtual memory manager
  9050. Note:    locks are applied on 4K page boundaries, so memory above and below
  9051.       the specified region may be locked as well
  9052. SeeAlso: AX=FF1Ch,AX=FF1Dh
  9053. --------E-31FF1C-----------------------------
  9054. INT 31 P - CauseWay - "LockMem32" - LOCK REGION OF MEMORY (32-bit)
  9055.     AX = FF1Ch
  9056.     ESI = starting linear address
  9057.     ECX = size of region in bytes
  9058. Return: CF clear if successful
  9059.     CF set on error
  9060. Desc:    prevent memory from being swapped out by the virtual memory manager
  9061. Note:    locks are applied on 4K page boundaries, so memory above and below
  9062.       the specified region may be locked as well
  9063. SeeAlso: AX=FF1Bh,AX=FF1Eh,AX=FF1Fh
  9064. --------E-31FF1D-----------------------------
  9065. INT 31 P - CauseWay - "UnLockMem" - UNLOCK REGION OF MEMORY
  9066.     AX = FF1Dh
  9067.     BX:CX = starting linear address
  9068.     SI:DI = size of region in bytes
  9069. Return: CF clear if successful
  9070.     CF set on error
  9071. Desc:    allow memory to be swapped out by the virtual memory manager
  9072. Note:    locks are applied on 4K page boundaries, so memory above and below
  9073.       the specified region may be unlocked as well
  9074. SeeAlso: AX=FF1Bh,AX=FF1Eh
  9075. --------E-31FF1E-----------------------------
  9076. INT 31 P - CauseWay - "UnLockMem32" - UNLOCK REGION OF MEMORY (32-bit)
  9077.     AX = FF1Eh
  9078.     ESI = starting linear address
  9079.     ECX = size of region in bytes
  9080. Return: CF clear if successful
  9081.     CF set on error
  9082. Desc:    allow memory to be swapped out by the virtual memory manager
  9083. Note:    locks are applied on 4K page boundaries, so memory above and below
  9084.       the specified region may be unlocked as well
  9085. SeeAlso: AX=FF1Ch,AX=FF1Dh,AX=FF20h
  9086. --------E-31FF1F-----------------------------
  9087. INT 31 P - CauseWay - "LockMemNear" - LOCK APPLICATION-RELATIVE MEMORY REGION
  9088.     AX = FF1Fh
  9089.     ESI = starting application-relative linear address
  9090.     EBX = size of region in bytes
  9091. Return: CF clear if successful
  9092.     CF set on error
  9093. Desc:    prevent memory from being swapped out by the virtual memory manager
  9094. Note:    locks are applied on 4K page boundaries, so memory above and below
  9095.       the specified region may be locked as well
  9096. SeeAlso: AX=FF1Ch,AX=FF20h
  9097. --------E-31FF20-----------------------------
  9098. INT 31 P - CauseWay - "UnLockMemNear" - UNLOCK APP-RELATIVE MEMORY REGION
  9099.     AX = FF20h
  9100.     ESI = starting application-relative linear address
  9101.     ECX = size of region in bytes
  9102. Return: CF clear if successful
  9103.     CF set on error
  9104. Desc:    allow memory to be swapped out by the virtual memory manager
  9105. Note:    locks are applied on 4K page boundaries, so memory above and below
  9106.       the specified region may be unlocked as well
  9107. SeeAlso: AX=FF1Eh,AX=FF1Fh
  9108. --------E-31FF21-----------------------------
  9109. INT 31 P - CauseWay - "GetMemDOS" - ALLOCATE CONVENTIONAL MEMORY
  9110.     AX = FF21h
  9111.     BX = number of paragraphs to allocate
  9112. Return: CF clear if successful
  9113.         AX = real-mode segment of allocated block
  9114.         DX = initial selector for block
  9115.     CF set on error
  9116.         AX = DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  9117.         BX = size of largest available block
  9118. Note:    if the requested size is greater than 64K, contiguous selectors will
  9119.       be allocated, one for each 64K; for 32-bit applications, the first
  9120.       selector's limit will be set to the size of the entire block, while
  9121.       that selector will have a limit of 64K for 16-bit applications.  All
  9122.       selectors after the first one have a limit of 64K except the final
  9123.       one
  9124. SeeAlso: AX=FF22h,AX=FF23h,INT 21/AH=48h
  9125. --------E-31FF22-----------------------------
  9126. INT 31 P - CauseWay - "ResMemDOS" - RESIZE CONVENTIONAL MEMORY BLOCK
  9127.     AX = FF22h
  9128.     BX = new size in paragraphs
  9129.     DX = initial selector for block
  9130. Return: CF clear if successful
  9131.     CF set on error
  9132.         AX = DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  9133.         BX = maximum number of paragraphs available
  9134. Note:    this function will also fail if the block is expanded past a 64K
  9135.       boundary and the next selector is already in use
  9136. SeeAlso: AX=FF21h,AX=FF23h,INT 21/AH=49h
  9137. --------E-31FF23-----------------------------
  9138. INT 31 P - CauseWay - "RelMemDOS" - RELEASE CONVENTIONAL MEMORY BLOCK
  9139.     AX = FF23h
  9140.     DX = initial selector for block
  9141. Return: CF clear if successful
  9142.     CF set on error
  9143.         AX = DOS error code (see #1020 at INT 21/AH=59h/BX=0000h)
  9144. Note:    all descriptors allocated for the block are freed
  9145. SeeAlso: AX=FF21h,AX=FF22h,INT 21/AH=4Ah
  9146. --------E-31FF24-----------------------------
  9147. INT 31 P - CauseWay - "ExecOverlay" - LOAD AND OPTIONALLY EXECUTE APP CODE
  9148.     AX = FF24h
  9149.     EBX = flags
  9150.         bit 0: don't execute (overlay only)
  9151.         bit 1: don't preserve relocation information
  9152.     ES:EDX -> filename (see also #2418)
  9153.     FS:ESI -> commandline (ESI = 00000000h if no commandline)
  9154.     GS:EDI -> name (CW's /o option)
  9155. Return: CF clear if successful
  9156.         ---EBX bit 0 set---
  9157.         CX:EDX = program entry point (CS:EIP)
  9158.         SI = segment of PSP
  9159.         ---EBX bit 1 set---
  9160.         BX:EAX = initial SS:ESP
  9161.         EDI high word = base segment
  9162.         EDI low word = number of segments
  9163.         EBP = start of segment definitions
  9164.     CF set on error
  9165.         AX = error code
  9166.         0001h DOS file access error
  9167.         0002h not a CuaseWay 3P file
  9168.         0003h not enough memory
  9169. SeeAlso: AX=FF2Ah,INT 21/AH=4Bh
  9170.  
  9171. Format of CauseWay executable:
  9172. Offset    Size    Description    (Table 2418)
  9173.  00h  2 BYTEs    signature "3P"
  9174.  02h    DWORD    size of header data in bytes
  9175.  06h    DWORD    size of EXE image data in bytes
  9176.  0Ah    DWORD    number of bytes of program memory required
  9177.  0Eh    WORD    number of segment definitions (see #2420)
  9178.  10h    DWORD    number of relocation table entries
  9179.  14h    DWORD    offset of program entry point
  9180.  18h    WORD    segment list entry number for entry point's CS
  9181.  1Ah    DWORD    initial ESP
  9182.  1Eh    WORD    segment list entry number for initial SS
  9183.  20h    DWORD    control flags (see #2419)
  9184.  24h    DWORD    automatic stack size in bytes if ESP entry = 00000000h
  9185.  28h    BYTE    length of name (name follows program image)
  9186.  29h 23 BYTEs    reserved
  9187. SeeAlso: #0935,#0950 at INT 21/AH=4Bh
  9188.  
  9189. Bitfields for CauseWay executable control flags:
  9190. Bit(s)    Description    (Table 2419)
  9191.  0    16-bit interrupt stack frame
  9192.  7    descriptor table type (0 = GDT, 1 = LDT)
  9193.  14    16-bit default data size
  9194.  31    compressed EXE image
  9195. Note:    bits 0 and 14 should always be equal
  9196. SeeAlso: #2418
  9197.  
  9198. Format of CauseWay segment definition [array]:
  9199. Offset    Size    Description    (Table 2420)
  9200.  00h    DWORD    start offset within program image
  9201.  04h    DWORD    length and type
  9202.         bits 0-19: length
  9203.         bit 20:       granularity (if set, length is in 4K pages)
  9204.         bits 21-24: type
  9205.             0000 code
  9206.             0001 read/write data
  9207.             0010 stack
  9208.             0011 read-only data
  9209.         bit 25: force segment descriptor's D bit to 0
  9210.         bit 26: force segmetn descriptor's D bit to 1
  9211. SeeAlso: #2418
  9212. --------E-31FF25-----------------------------
  9213. INT 31 P - CauseWay - "GetDOSTrans" - GET DOS TRANSFER BUFFER
  9214.     AX = FF25h
  9215. Return: BX = real-mode segment of transfer buffer
  9216.     ECX = transfer buffer size
  9217.     DX = protected-mode selector for transfer buffer
  9218. Note:    the default buffer size of 8K is sufficient for most applications,
  9219.       but an application performing large amounts of file I/O may benefit
  9220.       from allocating its own, larger buffer
  9221. SeeAlso: AX=FF00h,AX=FF26h
  9222. --------E-31FF26-----------------------------
  9223. INT 31 P - CauseWay - "SetDOSTrans" - SET DOS TRANSFER BUFFER
  9224.     AX = FF26h
  9225.     BX = real-mode segment of new transfer buffer
  9226.     ECX = new transfer buffer size
  9227.     DX = protected-mode selector for new transfer buffer
  9228. Return: nothing
  9229. Note:    the specific buffer must be located in conventional memory; only the
  9230.       first 64K will be used
  9231. SeeAlso: AX=FF25h
  9232. --------E-31FF27-----------------------------
  9233. INT 31 P - CauseWay v1.3 - "GetMCBSize" - GET CURRENT MCB ALLOCATION BLOCK SIZE
  9234.     AX = FF27h
  9235. Return: ECX = current threshold
  9236. Desc:    determine the memory allocation size below which CauseWay will use
  9237.       internal MCB chains rather than allocating full 4K pages via DPMI
  9238. SeeAlso: AX=FF00h,AX=FF28h
  9239. --------E-31FF28-----------------------------
  9240. INT 31 P - CauseWay v1.3 - "SetMCBSize" - SET MCB MEMORY ALLOCATION BLOCK SIZE
  9241.     AX = FF28h
  9242.     ECX = new threshold (0000000h to disable MCB memory allocation system)
  9243. Return: CF clear if successful
  9244.         threshold unchanged (default 16K)
  9245.     CF set on error (threshold > 64K)
  9246. Desc:    specify the memory allocation size below which CauseWay will use
  9247.       internal MCB chains rather than allocating full 4K pages via DPMI
  9248. Note:    the specified threshold will be rounded up to the next higher multiple
  9249.       of 4K
  9250. SeeAlso: AX=FF00h,AX=FF27h
  9251. --------E-31FF29-----------------------------
  9252. INT 31 P - CauseWay v1.3 - "GetSels" - ALLOCATE MULTIPLE SELECTORS
  9253.     AX = FF29h
  9254.     CX = number of selectors to allocate
  9255. Return: BX = base selector
  9256. Desc:    allocate multiple contiguous selectors, initializing each to have a
  9257.       base address and limit of zero
  9258. SeeAlso: AX=FF00h,AX=FF04h
  9259. --------E-31FF2A-----------------------------
  9260. INT 31 P - CauseWay v1.3 - "cwLoad" - LOAD ANOTHER CAUSEWAY PROGRAM AS OVERLAY
  9261.     AX = FF2Ah
  9262.     DS:EDX -> filename
  9263. Return: CF clear if successful
  9264.         CX:EDX = CS:EIP of entry point
  9265.         BX:EAX = initial SS:ESP for program
  9266.         SI = PSP for overlay program
  9267.     CF set on error
  9268.         AX = error code (01h file error, 02h not a 3P file, 03h no memory)
  9269. Note:    the returned PSP can be given to "RelMem" (AX=FF0Fh) to release the
  9270.       overlay's memory and selectors; only selectors and memory allocated
  9271.       during loading will be freed by RelMem unless one switches PSPs with
  9272.       INT 21/AH=50h
  9273. SeeAlso: AX=FF00h,AX=FF24h
  9274. --------E-31FF2B-----------------------------
  9275. INT 31 P - CauseWay v1.3 - "cwcInfo" - VALIDATE AND GET SIZE OF CWC FILE
  9276.     AX = FF2Bh
  9277.     BX = file handle for CWC-compressed file
  9278. Return: CF clear if successful
  9279.         ECX = expanded file size
  9280.     CF set on error (not a CWC-compressed file)
  9281. SeeAlso: AX=FF00h,AX=FFFBh
  9282. --------E-31FF2C-----------------------------
  9283. INT 31 P - CauseWay v1.3 - "GetMemSO" - ALLOCATE MEMORY AND RETURN SEL:OFFSET
  9284.     AX = FF2Ch
  9285.     CX:DX = block size in bytes
  9286. Return: CF clear if successful
  9287.        SI:DI = selector:offset of allocated memory
  9288.     CF set on error
  9289. Note:    unlike "GetMem" (AX=FF0Bh), this function will reuse selectors until a
  9290.       segment is full, rather than allocating a new selector for each
  9291.       memory block
  9292. SeeAlso: AX=FF00h,AX=FF2Dh,AX=FF2Eh
  9293. --------E-31FF2D-----------------------------
  9294. INT 31 P - CauseWay v1.3 - "ResMemSO" - RESIZE SELECTOR:OFFSET MEMORY BLOCK
  9295.     AX = FF2Dh
  9296.     SI:DI = selector:offset for memory block
  9297.     CX:DX = new size of block
  9298. Return: CF clear if successful
  9299.        SI:DI = new selector:offset for memory block
  9300.     CF set on error
  9301. SeeAlso: AX=FF00h,AX=FF2Ch,AX=FF2Eh
  9302. --------E-31FF2E-----------------------------
  9303. INT 31 P - CauseWay v1.3 - "RelMemSO" - RELEASE SELECTOR:OFFSET MEMORY BLOCK
  9304.     AX = FF2Eh
  9305.     SI:DI = selector:offset for memory block
  9306. SeeAlso: AX=FF00h
  9307. --------E-31FFFB-----------------------------
  9308. INT 31 P - Causeway v1.3 - "cwcLoad" - LOAD/EXPAND CWC-COMPRESSED FILE
  9309.     AX = FFFBh
  9310.     BX = source file handle
  9311.     ES:EDI -> memory buffer into which to expand file
  9312. Return: CF clear if successful
  9313.         ECX = expanded data length
  9314.     CF set on error
  9315.         EAX = error code (01h file error, 02h bad data, 03h not CWC file)
  9316. Note:    the provided file may consist of the concatenation of several CWC
  9317.       files; the one beginning at the current file position will be
  9318.       expanded
  9319. SeeAlso: AX=FF2Bh
  9320. --------v-32---------------------------------
  9321. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  9322. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  9323. --------v-32---------------------------------
  9324. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  9325. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  9326. --------y-326E-------------------------------
  9327. INT 32 - NOISE.SYS 0.53 - API
  9328.     AH = 6Eh (function ID)
  9329.     AL = subfunction (see INT 32/AX=6E00h)
  9330. Return: CF set on error
  9331.         AL = error code (see #2421)
  9332.     CF clear if successful
  9333. Notes:    INT 32 is only a proposed interface for NOISE.SYS. Use the IOCTL READ
  9334.       from the RANDOM device to determine the interrupt and function ID
  9335.       used by the driver, since future versions may use the Alternate
  9336.       Multiplex Interrupt (AMIS) at INT 2Dh.
  9337.     the beta v0.51 had a substantially different API on INT 32/AH=6Eh
  9338.  
  9339. (Table 2421)
  9340. Values for NOISE.SYS error codes:
  9341.  00h    subfunction not supported
  9342.  FBh    random pool is empty
  9343.  FCh    quality of sample is too low
  9344.  FDh    too many processes using the API or driver
  9345.  FEh    subfunction is disabled in the current build
  9346.  FFh    successful
  9347. --------y-326E00-----------------------------
  9348. INT 32 - NOISE.SYS v0.53+ - INSTALLATION CHECK
  9349.     AX = 6E00h
  9350. Return: AL = installation status
  9351.         00h not installed
  9352.         FFh installed
  9353.         CX = version (ie, 0123h = Version 1.2.3)
  9354.         DX:DI -> signature string
  9355. --------y-326E01-----------------------------
  9356. INT 32 - NOISE.SYS v0.53+ - GET ENTRY POINT
  9357.     AX = 6E01h
  9358. Return: AL = FFh
  9359.     DX:DI -> far call hook
  9360. ----------326E04-----------------------------
  9361. INT 32 - NOISE.SYS v0.55+ - GET INTERRUPT HOOK LIST
  9362.     AX = 6E04h
  9363. Return: AL = status
  9364.         00h = unimplemented
  9365.         04h = DX:BX -> interrupt hook list
  9366.         FEh = subfunction disabled
  9367. Note:    the hook list array ends with API interrupt (usually 32h, although
  9368.       it will differ if the API is installed at another interrupt)
  9369. ----------326E06-----------------------------
  9370. INT 32 - NOISE.SYS v0.55+ - GET DEVICE DRIVER HEADER
  9371.     AX = 6E06h
  9372. Return: AL = number of device drivers in NOISE.SYS chain
  9373.         02h = default (for RANDOM and URANDOM devices)
  9374.     AH = AMIS device driver flags (set to 00h for now)
  9375.     DX:BX -> first device in chain (see #0987)
  9376. SeeAlso: INT 2D/AL=06h
  9377. --------y-326E10-----------------------------
  9378. INT 32 - NOISE.SYS v0.53+ - STATUS CHECK
  9379.     AX = 6E10h
  9380. Return: CF set on error
  9381.         AL = error code (FDh) (see #2421)
  9382.     CF clear if successful
  9383.         AL = status
  9384.         FFh successful
  9385.         BH = number of processes using the API
  9386.         CX = number of random bytes waiting
  9387.         DX = maximum possible bytes waiting
  9388.         (if CX=DX, the pool is full)
  9389. Note:    this subfunction is a convenient way to check the driver if any
  9390.       fresh bytes are waiting in the output pool.
  9391. SeeAlso: INT 32/AH=6Eh,AX=6E00h,AX=6E11h
  9392. --------y-326E11-----------------------------
  9393. INT 32 - NOISE.SYS v0.53+ - GET ENTROPY ESTIMATE
  9394.     AX = 6E11h
  9395. Return: CF set on error
  9396.         AL = error code (00h,FDh,FEh) (see #2421)
  9397.     CF clear if successful
  9398.         EBX = estimated bit count (refer to note below)
  9399.         CL = FRACBITS (number of fractional bits)
  9400.         EDX = low 32-bits of total number of samples added
  9401. Note:  the estimated number of fresh random bits is equal to
  9402.       (EAX >> FRACBITS) + ((EAX & ((1 << FRACBITS)-1) / (1 << FRACBITS))
  9403. SeeAlso: AH=6Eh,AX=6E00h
  9404. --------y-326E12-----------------------------
  9405. INT 32 - NOISE.SYS v0.53+ - ADD SAMPLE FROM FAST TIMER
  9406.     AX = 6E12h
  9407. Return: CF set on error
  9408.         AL = error code (FCh,FDh,FEh) (see #2421)
  9409.     CF clear if successful
  9410.         CX = number of random bytes waiting
  9411. Note:    subfunctions 12h and 13h are meant for applications or devices
  9412.       which are able to gather entropy from other sources which are
  9413.       not polled by NOISE.SYS (for example, a communications driver
  9414.       could use this call to sample packet arrival times).
  9415. SeeAlso: AX=6E00h,AX=6E10h,AX=6E13h
  9416. --------y-326E13-----------------------------
  9417. INT 32 - NOISE.SYS v0.53+ - ADD 16-BIT SAMPLE TO RANDOM POOL
  9418.     AX = 6E13h
  9419.     DX = sample
  9420. Return: CF set on error
  9421.         AL = error code (FCh,FEh) (see #2421)
  9422.     CF clear if successful
  9423.         CX = number of random bytes waiting
  9424. SeeAlso: AX=6E00h,AX=6E11h
  9425. --------y-326E14-----------------------------
  9426. INT 32 - NOISE.SYS v0.53+ - GET FLAGS
  9427.     AX = 6E14h
  9428. Return: BX = flags (see #2422)
  9429.     CX = mask of settable flags in BX
  9430. SeeAlso: AX=6E00h,AX=6E15h
  9431.  
  9432. Bitfields for NOISE.SYS flags:
  9433. Bit(s)    Description    (Table 2422)
  9434.  0    MS Windows active
  9435.  1-5    reserved
  9436.  6    clock drift sampling
  9437.  7    video retrace drift sampling
  9438.  8    network access sampling (not implemented yet in 0.53)
  9439.  9    CD-ROM access sampling (not implemented yet in 0.53)
  9440.  10    DOS spinner
  9441.  11    DOS process start/end and miscellaneous process activity sampling
  9442.  12    mouse movement/button sampling
  9443.  13    disk sampling (INT 13)
  9444.  14    keystroke timings
  9445.  15    reserved for hardware RNG
  9446. --------y-326E15-----------------------------
  9447. INT 32 - NOISE.SYS v0.53+ - SET FLAGS
  9448.     AX = 6E15h
  9449.     BX = flags (see #2422)
  9450. Return: BX = new flags
  9451. Note:    flags which AX=6E14h indicates are not settable should be masked off
  9452.       by ANDing with the CX returned by AX=6E14h
  9453. SeeAlso: AX=6E00h,AX=6E14h
  9454. --------y-326E16-----------------------------
  9455. INT 32 - NOISE.SYS v0.53+ - READ URANDOM BYTES
  9456.     AX = 6E16h
  9457.     CX = number of bytes
  9458.     ES:DI -> buffer
  9459. Return: CF set on error
  9460.         AL = error code (FDh,FEh) (see #2421)
  9461.     CF clear if successful
  9462.         CX = number of random bytes read
  9463. SeeAlso: AX=6E00h,AX=6E12h,AX=6E17h
  9464. --------y-326E17-----------------------------
  9465. INT 32 - NOISE.SYS v0.53+ - READ RANDOM BYTES
  9466.     AX = 6E17h
  9467.     CX = number of bytes
  9468.     ES:DI -> buffer
  9469. Return: CF set on error
  9470.         AL = error code (FBh,FDh,FEh) (see #2421)
  9471.     CF clear if successful
  9472.         CX = number of random bytes read
  9473. SeeAlso: AX=6E00h,AX=6E16h
  9474. ----------326E18-----------------------------
  9475. INT 32 - NOISE.SYS v0.6+ - READ CONTROL RECORD
  9476.     AX = 6E18h
  9477.     CX = buffer size
  9478.     ES:DI -> buffer
  9479. Return: AL = status
  9480.         00h unimplemented (before v0.6)
  9481.         FEh subfunction is disabled
  9482.         FFh successful
  9483.         CX = number of bytes read
  9484. Note:    the control record corresponds to the IOCTL Read record for the RANDOM
  9485.       device
  9486. ----------326E-------------------------------
  9487. INT 32 - NOISE.SYS - RESERVED FOR FUTURE USE
  9488.     AH = 6Eh
  9489.     AL = 19h to 3Fh
  9490. Return: AL = 00h
  9491. Note:    these functions are reserved for future use; user additions to the
  9492.       the driver should use subfunctions 40h to FFh.
  9493. --------!---Section--------------------------
  9494.